Question

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!

Was it helpful?

Solution

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top