如何更改 "remember-me" Laravel cookie 的生命周期?
How to change the "remember-me" Laravel cookie lifetime?
我使用 Laravel 5.8 的内置 "Remember me" 功能。我检查了 cookie,发现 remember-me
cookie 在大约 5 年内过期。那太长了,我想缩短它。由于 Laravel 自动创建 cookie,我没有手。我该怎么做?
记住我的持续时间可以通过覆盖 AuthenticatesUsers
特征来覆盖。您可以将以下代码添加到 LoginController
以覆盖以下控制器中的特征:
protected function sendLoginResponse(Request $request)
{
$customRememberMeTimeInMinutes = 10;
$rememberTokenCookieKey = Auth::getRecallerName();
Cookie::queue($rememberTokenCookieKey, Cookie::get($rememberTokenCookieKey), $customRememberMeTimeInMinutes);
$request->session()->regenerate();
$this->clearLoginAttempts($request);
return $this->authenticated($request, $this->guard()->user())
?: redirect()->intended($this->redirectPath());
}
另一种方法是通过将 users
table 中的 remember_token
设置为空值来使记住我会话无效。
示例:
$user = Auth::user();
$user->remember_token = null;
$user->save();
使用 Laravel 8(可能更早),这(在撰写本文时)要容易得多。
只需将密钥 remember
添加到 config/auth.php
文件中的适当守卫即可。在这个例子中,我有一个名为 customGuard
的自定义守卫
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'customGuard' => [
'driver' => 'session',
'provider' => 'users',
'remember' => "10080" //Number of minutes the "remember me" option works for.
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
我使用 Laravel 5.8 的内置 "Remember me" 功能。我检查了 cookie,发现 remember-me
cookie 在大约 5 年内过期。那太长了,我想缩短它。由于 Laravel 自动创建 cookie,我没有手。我该怎么做?
记住我的持续时间可以通过覆盖 AuthenticatesUsers
特征来覆盖。您可以将以下代码添加到 LoginController
以覆盖以下控制器中的特征:
protected function sendLoginResponse(Request $request)
{
$customRememberMeTimeInMinutes = 10;
$rememberTokenCookieKey = Auth::getRecallerName();
Cookie::queue($rememberTokenCookieKey, Cookie::get($rememberTokenCookieKey), $customRememberMeTimeInMinutes);
$request->session()->regenerate();
$this->clearLoginAttempts($request);
return $this->authenticated($request, $this->guard()->user())
?: redirect()->intended($this->redirectPath());
}
另一种方法是通过将 users
table 中的 remember_token
设置为空值来使记住我会话无效。
示例:
$user = Auth::user();
$user->remember_token = null;
$user->save();
使用 Laravel 8(可能更早),这(在撰写本文时)要容易得多。
只需将密钥 remember
添加到 config/auth.php
文件中的适当守卫即可。在这个例子中,我有一个名为 customGuard
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'customGuard' => [
'driver' => 'session',
'provider' => 'users',
'remember' => "10080" //Number of minutes the "remember me" option works for.
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],