2013-08-06 13 views
12

Laravel için oldukça yeni ve beni hatırla işleviyle ilgili bir sorum var.Laravel 4 Beni hatırla zaman aşımına uğrat

"Beni hatırla" işlevini, böyle bir şekilde Auth :: deneme yöntemine ikinci bir argüman ekleyerek başarıyla etkinleştirdim.

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

Dokümantasyonda belirtildiği gibi, bu, süresiz olarak veya bir kullanıcı manuel olarak çıkış yapana kadar beni hatırlar.

Aslında "beni hatırla" işlevinde bir son kullanma tarihi ayarlamak istiyorum.

Konsola bakarak, "beni hatırla" özelliğini etkinleştirmenin bir remember_ {HASH} çerezi oluşturduğunu görebiliyorum.

Gelecekte bir hafta izin vermek için bu çerezde belirtilen son kullanma tarihinin üzerine yazmanın en iyi yolu ne olurdu? Çerez şu andaki tarihi ayarlıyor, bu da sonsuza kadar sürecek.

Kullanıcı ömrüne bağlı olarak beni hatırla işlevini tetikleyebilmem için oturumları 'lifeetime' => 0 olarak ayarlamak zorunda olduğumu unutmayın.

Teşekkürler!

+4

Laravel son kullanma süresini ** + 5yıl ** olarak belirler. Hayır, çekirdeği değiştirmediğiniz sürece yapamazsınız, çünkü “Auth :: attempt()” çerezini saklamak için “Cookie :: forever()” yöntemini kullanır ve son kullanma süresi ** hard Coded ** şeklindedir. Bu nedenle, son kullanma süresini ayarlamak için Laravel çekirdeğine el atmanız gerekir. –

+0

Kendi paketinizi oluşturabileceğinizi ve bunu Laravel ile birlikte verilen 'Auth' paketi yerine kullanabileceğinizi düşünüyorum. Ancak laravel için yeni iseniz o zaman uygun olmayabilir. – Cristian

cevap

15

Bunu yapmanın iyi bir yolu olup olmadığını bilmiyorum, ama beni hatırlamak için son kullanma süresini ayarlama konusunda çaresiz iseniz, bunu deneyebilirsiniz, yine de benim için çalışır.

5 yıl beni hatırlar son kullanma süresini ayarlayarak, laravel en Auth::atempt($credential,true) yani normal iş, yapalım

App::after() yöntemi bulmak ve çerez değiştirebilir filters.php dosyasında yüzden, App::after() yönteminde bu değişecek

son kullanma süresi

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

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

+0

Cevabınız için teşekkürler! Bu harika çalışıyor ve çekirdek dosyaları düzenlemek yerine bunu yapmayı tercih ediyorum. –

İlgili konular