[英]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.