我在保持用户登录方面遇到了麻烦,所以我做了一些测试,我注意到函数viaRemember总是返回false
。
这是我的登录控制器功能,其中删除了所有不相关的代码:
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.');
}
工作正常。如您所见,Auth::attempt
中的第二个参数默认设置为true
。
在我的数据库中,“remember_token”的值在每次登录时都会更改,因此似乎正在运行。但是,如果我执行dd(Auth::viaRemember());
,结果将始终为false
。
我也尝试更改我的config/session.php
设置,切换一些值,但这似乎没有做太多。
为什么会这样?
答案 0 :(得分:0)
我认为你误解了这个功能。 “viaRemember”用于检查返回的用户是否通过“记住我”功能进行了身份验证。 绝对是第一次登录时“记住我”,这将返回false。尝试关闭浏览器并再次打开它将返回true。
或者您可以通过进入 config \ session.php 并更改
来实现其行为'expire_on_close' = false
为真,一切都变得很好,就像你想的那样