Laravel 4记住我过期时间

Posted

技术标签:

【中文标题】Laravel 4记住我过期时间【英文标题】:Laravel 4 Remember me expire time 【发布时间】:2013-08-06 21:10:48 【问题描述】:

我是 Laravel 的新手,对记住我的功能有疑问。

我已经通过像这样将第二个参数附加到 Auth::attempt 方法成功地启用了“记住我”功能。

if (Auth::attempt(array('email' => $email, 'password' => $password), true))

    // The user is being remembered...

如文档中所述,这可以无限期地记住我,或者直到用户手动注销。

我实际上是想在“记住我”功能上设置一个过期日期。

查看控制台,我可以看到启用“记住我”会生成一个 remember_HASH cookie。

覆盖此 cookie 中指定的过期日期以假设未来一周的最佳方法是什么? cookie 当前将日期设置为过去,从而使其永久有效。

请记住,我必须在 session.php 中设置 'lifetime' => 0 以便我可以根据用户偏好触发记住我的功能,因此在我的情况下将其更改为一周是行不通的。

谢谢!

【问题讨论】:

Laravel 将过期时间设置为 +5 年。不,除非你改变核心,否则你不能,因为Auth::attempt() 使用Cookie::forever() 方法来存储 cookie,并且过期时间是 硬编码 的。所以设置过期时间你必须掌握 Laravel 核心。 我相信你可以创建自己的包并使用它来代替与 Laravel 捆绑的“Auth”包。但是,如果您是 laravel 新手,那么它可能不适合。 【参考方案1】:

我不知道这是否是一个好方法,但如果你迫切希望设置记住我的过期时间,你可以试试这个,不过它对我有用。

让 laravel 的 Auth::atempt($credential,true) 做它的正常业务,即将记住我的过期时间设置为 5 年

我们将在App::after() 方法中更改此设置,因此在您的filters.php 文件中找到App::after() 方法并更改cookie 过期时间

App::after(function($request, $response)

  if ( Auth::check())
      $ckname=Auth::getRecallerName(); //Get the name of the cookie, where remember me expiration time is stored
      $ckval=Cookie::get($ckname); //Get the value of the cookie
      return $response->withCookie(Cookie::make($ckname,$ckval,360)); //change the expiration time
  
);

注意Cookie::make('name','value','expiration time');

【讨论】:

感谢您的回答!这很好用,我宁愿这样做也不愿编辑核心文件。

以上是关于Laravel 4记住我过期时间的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3记住我身份验证问题

将过期时间添加到 Spring Security 记住我的 cookie

Laravel 4清除所有过期缓存

Laravel 护照延长访问令牌过期时间

JSON Web 令牌过期和记住我功能

更改默认 ASP.NET 身份 两因素记住 Cookie 过期时间