Laravel 4 Remember me expire time

半腔热情 提交于 2019-11-29 02:49:54

问题


I am fairly new to Laravel and had a question regarding the remember me function.

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.

Looking at the console, I can see that enabling "remember me" generates a remember_{HASH} 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.

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.

Thanks!


回答1:


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.

Let the laravel's Auth::atempt($credential,true) do its normal business, i.e, setting the remember me expiration time to 5 years

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
  }
});

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



来源:https://stackoverflow.com/questions/18070400/laravel-4-remember-me-expire-time

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!