Laravel 4记住我过期时间
我是 Laravel 的新手,对记住我的功能有疑问.
I am fairly new to Laravel and had a question regarding the remember me function.
我已经通过像这样将第二个参数附加到 Auth::attempt 方法成功地启用了记住我"功能.
I have successfully enabled the "remember me" function by attaching a second argument to the Auth::attempt method like so.
if (Auth::attempt(array('email' => $email, 'password' => $password), true))
{
// The user is being remembered...
}
如文档中所述,这可以无限期地记住我,或者直到用户手动注销.
As noted in the documentation, this enables remember me indefinitely or until an user manually logs out.
我实际上是想在记住我"功能上设置一个过期日期.
I essentially want to set an expire date on the "remember me" function.
查看控制台,我可以看到启用记住我"会生成一个 remember_{HASH} cookie.
Looking at the console, I can see that enabling "remember me" generates a remember_{HASH} cookie.
覆盖此 cookie 中指定的过期日期以假设未来一周的最佳方法是什么?cookie 当前将日期设置为过去,从而使其永久有效.
What would be the best way to overwrite the expire date specified in this cookie to let say a week in the future? The cookie currently sets the date in the past, which makes it last forever.
请记住,我必须在 session.php 中设置 'lifetime' => 0 以便我可以根据用户偏好触发记住我的功能,因此在我的情况下将其更改为一周是行不通的.
Keep in mind that I had to set 'lifetime' => 0 in sessions.php so that I can trigger the remember me function based on user preference so changing this into a week would not work in my case.
谢谢!
推荐答案
我不知道这是否是一个好方法,但如果你不顾一切设置过期时间记住我你可以试试这个,但它对我有用.
I don't know whether its a good way to do it or not, but if you are desperate to set the expiration time for remember me you can try this, it works for me though.
让 laravel 的 Auth::attempt($credential,true)
做它的正常业务,即将记住我的过期时间设置为 5 年
Let the laravel's Auth::atempt($credential,true)
do its normal business, i.e, setting the remember me expiration time to 5 years
我们将在 App::after()
方法中进行更改,因此在您的 filters.php
文件中找到 App::after()
方法和更改 cookie 过期时间
We will change this in App::after()
method, so in your filters.php
file find App::after()
method and change the cookie expiration time
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');
相关文章