繁体   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