Laravel 4记住我过期时间

时间:2013-08-06 01:26:59

标签: php cookies laravel laravel-4 remember-me

我对Laravel相当新,并对记住我的功能提出了疑问。

我已成功启用了“记住我”功能,方法是将第二个参数添加到Auth :: attempt方法中。

if (Auth::attempt(array('email' => $email, 'password' => $password), true))
{
    // The user is being remembered...
}

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

我基本上想在“记住我”功能上设置过期日期。

查看控制台,我可以看到启用“记住我”会生成remember_ {HASH} cookie。

覆盖此Cookie中指定的过期日期的最佳方法是说将来一周? Cookie目前设置过去的日期,这使它永远持续。

请记住,我必须设置'lifetime'=>在sessions.php中为0,这样我就可以根据用户偏好触发记住我的功能,所以将其改为一周就不适用于我的情况。

谢谢!

1 个答案:

答案 0 :(得分:15)

我不知道这是否是一个好方法,但是如果你不顾一切地设定过期时间来记住我你可以试试这个,它对我有用。

让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');