2013-08-06 16 views
12

Ich bin ziemlich neu in Laravel und hatte eine Frage bezüglich der Funktion "Remember Me".Laravel 4 Erinnere mich Ablaufzeit

Ich habe die Funktion "Erinnere mich" erfolgreich aktiviert, indem ich ein zweites Argument an die Auth :: versuch-Methode angehängt habe.

Wie in der Dokumentation erwähnt, ermöglicht dies die Erinnerung mich auf unbestimmte Zeit oder bis ein Benutzer sich manuell abmeldet.

Ich möchte im Wesentlichen ein Ablaufdatum auf der Funktion "Erinnere mich" festlegen.

Mit Blick auf die Konsole kann ich sehen, dass die Aktivierung von "remember me" einen remember_ {HASH} -Cookie generiert.

Was wäre die beste Möglichkeit, das in diesem Cookie angegebene Ablaufdatum zu überschreiben, um beispielsweise eine Woche in der Zukunft zu lassen? Der Cookie setzt derzeit das Datum in der Vergangenheit, wodurch es für immer hält.

Denken Sie daran, dass ich in sessions.php 'lifetime' => 0 setzen musste, damit ich die remember me-Funktion basierend auf den Benutzereinstellungen auslösen kann, würde das Ändern in eine Woche in meinem Fall nicht funktionieren.

Danke!

+4

Laravel legt die Verfallszeit auf ** + 5 Jahre ** fest. Nein, das geht nur, wenn Sie den Kern ändern, da 'Auth :: versuch()' die Methode 'Cookie :: forever()' verwendet, um den Cookie zu speichern und die Ablaufzeit ist ** hart codiert ** hinein. Um die Ablaufzeit festzulegen, müssen Sie also den Laravel-Kern auflegen. –

+0

Ich glaube, Sie könnten Ihr eigenes Paket erstellen und es anstelle des 'Auth' Pakets verwenden, das mit Laravel gebündelt ist. Allerdings, wenn Sie Laravel neu sind, dann ist es möglicherweise nicht geeignet. – Cristian

Antwort

15

Ich weiß nicht, ob es ein guter Weg ist, es zu tun oder nicht, aber wenn Sie verzweifelt sind, die Ablaufzeit für mich zu erinnern, können Sie dies versuchen, es funktioniert aber für mich.

Auth::atempt($credential,true) die Laravel Lasst uns seine normale Geschäfte machen, das heißt, die

Ablaufzeit 5 Jahre erinnern mich Einstellung

Wir werden dies in App::after() Methode ändern, so in Ihrer filters.php Datei App::after() Methode finden und das Cookie ändern Ablaufzeit

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

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

+0

Danke für die Antwort! Das funktioniert großartig und ich würde das lieber tun, als die Kerndateien zu bearbeiten. –