簡體   English   中英

如何更改 laravel 9 中“記住我”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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM