我怎么能这样做,以便在我的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');
}
编辑:我稍微更改了代码,以解释为什么当前的答案对我不起作用。
答案 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
希望这能帮到你!