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记住我过期时间的主要内容,如果未能解决你的问题,请参考以下文章