2013-08-06 12 views
12

Sono abbastanza nuovo per Laravel e ho una domanda riguardante la funzione Ricordami.Laravel 4 Mi ricordo che scade il tempo

Ho abilitato con successo la funzione "ricordami" allegando un secondo argomento al metodo Auth :: tent in questo modo.

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

Come osservato nella documentazione, questo permette ricordarsi di me a tempo indeterminato o fino a quando un utente si disconnette manualmente.

In sostanza, desidero impostare una data di scadenza sulla funzione "Ricordami".

Guardando la console, vedo che abilitare "ricordami" genera un cookie remember_ {HASH}.

Quale sarebbe il modo migliore per sovrascrivere la data di scadenza specificata in questo cookie per consentire di dire una settimana in futuro? Il cookie attualmente imposta la data nel passato, che lo rende duraturo per sempre.

Tenete presente che ho dovuto impostare 'lifetime' => 0 in sessions.php in modo da poter attivare la funzione di ricordare me in base alle preferenze dell'utente, quindi cambiarlo in una settimana non funzionerebbe nel mio caso.

Grazie!

+4

Laravel imposta il tempo di scadenza su ** + 5 anni **. No, non puoi a meno che tu non cambi il core, perché "Auth :: attempt()" usa il metodo "Cookie :: forever()" per memorizzare il cookie e il tempo di scadenza è ** hard Coded ** in esso .. Quindi per impostare il tempo di scadenza devi mettere le mani sul nucleo di Laravel. –

+0

Credo che potresti creare il tuo pacchetto e usarlo al posto del pacchetto "Auth" in bundle con Laravel. Tuttavia, se sei nuovo in laravel, potrebbe non essere adatto. – Cristian

risposta

15

Non so se è un buon modo per farlo o no, ma se vuoi disperatamente impostare il tempo di scadenza per ricordarmi di me puoi provare questo, funziona comunque per me.

Let del laravel Auth::atempt($credential,true) fare la sua normale attività, vale a dire, l'impostazione del tempo mi ricordo di scadenza per cinque anni

Cambieremo questo App::after() metodo, quindi nel file filters.php trovare App::after() metodo e modificare il cookie ora di scadenza

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

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

+0

Grazie per la risposta! Funziona alla grande e preferirei farlo piuttosto che modificare i file core. –