在Laravel中覆盖用户`remember_me`标记

时间:2017-07-05 01:50:02

标签: php laravel

我希望在使用generator ==>时生成相同的remember_token php artisan make:auth。 以下是我正在创建的新user

 $user = User::create(['name' => $request->name,'email' => $request->email,'password' => bcrypt($request->password),'phone' => $request->phone,'address' => $request->address]);

但我不知道如何生成remember_token

 $user = User::create(['...'=>'...','remember_token' => what()]);
  

我已经在我的数据库中创建了remember_token。

1 个答案:

答案 0 :(得分:1)

如果您使用Laravel附带的默认User.php模型,则可以覆盖方法setRememberToken($token)

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    public function setRememberToken($token)
    {
        // Set the remember token your own way...

        $this->remember_token = 'my random token';
    }
}

这在EloquentUserProvider这里调用:

https://github.com/laravel/framework/blob/5.4/src/Illuminate/Auth/EloquentUserProvider.php#L71-L89

/**
 * Update the "remember me" token for the given user in storage.
 *
 * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
 * @param  string  $token
 * @return void
 */
public function updateRememberToken(UserContract $user, $token)
{
    $user->setRememberToken($token);

    $timestamps = $user->timestamps;

    $user->timestamps = false;

    $user->save();

    $user->timestamps = $timestamps;
}