[英]how to set remember me option in laravel 5.4 using cookie
[英]How to change duration of "remember me" cookie in laravel 9?
我正在使用 laravel 9 并在没有laravel 入门套件的情况下手动实施登录身份验证,我已经阅读了很多这样的问题,但大多数答案仅适用于使用入门套件的人,我还阅读了其他一些没有入门工具包的答案,但大多数都不起作用。
这是我在 controller 中的登录方法:
public function auth()
{
// validation
request()->validate([
'emailOrUsername' => ['required'],
'password' => ['required']
]);
// Check if the user clicks "remember me" in the login form
$remember = (request()->remember) ? true : false;
// If login using email
if (Auth::attempt(['email' => request()->emailOrUsername, 'password' => request()->password], $remember)) {
request()->session()->regenerate();
return redirect()->intended('/dashboard');
}
// If login using username
else if (Auth::attempt(['username' => request()->emailOrUsername, 'password' => request()->password], $remember)) {
request()->session()->regenerate();
return redirect()->intended('/dashboard');
}
// If incorrect credentials
else {
return back()->with('errorAlert', 'Maaf, email/username atau password yang anda masukkan salah');
}
}
我还注意到“记住我”的默认 cookie 持续时间似乎是在Illuminate\Auth\SessionGuard
命名空间中设置的(但我在官方 laravel 文档中没有找到解释),我看到 class 有一个setRememberDuration()
更改“记住我”cookie持续时间的方法,但我不知道如何正确调用它,我使用了Auth::setRememberDuration(1000)
但它不起作用。 有没有其他方法可以使用该方法设置“记住我”cookie 持续时间? 还是有另一种方法可以在不使用该方法的情况下更改持续时间?
您可以在 config/auth.php 中设置它:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
'remember' => now()->addDays(7)->diffInMinutes(),
]
],
然后由 AuthManager 使用:
if (isset($config['remember'])) {
$guard->setRememberDuration($config['remember']);
}
编辑:
对于未来的读者,此答案仅适用于 Laravel 8.65.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.