永远记住Laravel中的用户

时间:2018-03-19 05:42:10

标签: laravel

我怎么能这样做,以便在我的laravel登录控制器中,用户总是被记住?

我尝试制作$remember_me = 1

但这似乎不起作用。

控制器:

public function postSignin(Request $request, AppMailer $mailer) {
    $this->validate($request, [
        'email' => 'required',
        'password' => 'required',
    ]);     

    $username = $request->get('email');
    $password = $request->get('password');

    $field = filter_var($username,FILTER_VALIDATE_EMAIL)? 'email': 'username';      

    Auth::attempt([$field => $username, 'password' => $password], true);


    return redirect()->back()->with('info', 'You are now signed in.');
}       

启动Home控制器:

public function getIndex() {
    if (Auth::check()) {

        if (Auth::viaRemember()) {
            dd('test');
        }

编辑:我稍微更改了代码,以解释为什么当前的答案对我不起作用。

1 个答案:

答案 0 :(得分:0)

您可以将布尔值作为第二个参数传递给attempt方法,这将使用户无限期地进行身份验证,或者直到他们手动注销。当然,您的users表必须包含字符串remember_token列,该列将用于存储“记住我”令牌。

if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) {
     // The user is being remembered...
}
  

如果您使用附带的内置LoginController   Laravel,“记住”用户的正确逻辑已经实现   根据控制器使用的特征。

如果您是"remembering"个用户,则可以使用viaRemember方法确定用户是否使用“记住我”Cookie进行了身份验证:

if (Auth::viaRemember()) {
    //
}

编辑:

检查您的config/session.php设置:

'lifetime' => 10080,
'expire_on_close' => true,

只需将expire_on_close设置为true

即可

希望这能帮到你!