2014-09-27 15 views
17

Gibt es eine inhärente Möglichkeit, Sitzungen so einzurichten, dass sie nach einer bestimmten Zeit ablaufen. Mein aktuelles Setup scheint nach 30 Minuten abzulaufen und ich möchte das deaktivieren oder zumindest erhöhen, aber ich kann keine Orte in Laravel finden, wo dies eingestellt werden könnte?Wie man Sitzungstimeout in Laravel 4.2 einstellt?

Antwort

20

Überprüfen Sie Ihre php.ini, hat es einen Wert für session.gc_maxlifetime (und auch session.cookie_lifetime), die eine Begrenzung der Dauer von PHP für Sitzungen festlegen. Wenn Laravel die Optionen festlegt, übergibt es cookie_lifetime als den in app/config/session.php festgelegten Wert.

Sitzungen sind jedoch nicht sofort nach Erreichen der maximalen Lebensdauer abgelaufen. Was passiert, nachdem diese Zeit verstrichen ist, steht die Sitzung zur Verfügung, um vom Garbage Collector entfernt zu werden.

Um das Problem zu

Eine Abhilfe überprüfen Sie Ihre php.ini Datei zu lösen. Sie können diese Variable definiert haben: session.gc_maxlifetime. Standardmäßig ist es auf 1440 eingestellt. Nur kommentieren oder löschen Sie es.

Ab diesem Zeitpunkt funktioniert die Sitzung möglicherweise ordnungsgemäß mit den Konfigurationswerten von session.php.

5

App\Config\Session.php

Prüfung für Lebenszeit ...

Sie auch einstellen ...

Cookie::make('name', 'value', 60); // 1 hr 
34

In app/config/session.php Sie haben:

lifetime

Option, die Sie Sitzung Ablaufzeit in Minuten (in Sekunden)

'lifetime' => 60, 

einstellen lassen bedeutet, dass Sitzung nach einem abläuft Stunde.

Es gibt auch eine weitere Einstellung hier:

'expire_on_close' => true, 

, die darüber entscheidet, ob Sitzung abgelaufen wird, wenn Browser geschlossen wird.

Andere Einstellungen, die Sie interessiert auch php.ini Werte bekommen konnte:

session.cookie_lifetime = 0 

und

session.gc_maxlifetime = 1440 

Das sind Standardwerte.

Der erste Wert gibt an, wie lange der Sitzungscookie gespeichert wird - der Standardwert ist 0 (bis die Suche beendet ist). Die zweite Option bedeutet, nach wievielen von Sekunden PHP diese Sitzungsdaten zerstören kann.

Ich sagte Mai, weil es eine andere Option session.gc_probability in php.ini Datei gibt, die entscheidet, was die Chance ist, Garbage Collector auszuführen. Als Standard gibt es nur 1% Chance, dass nach 1440 Sekunden (24 Minuten) diese Sitzungsdaten zerstört werden.

+2

dem ersten Teil davon zu sehen (lebenslange und expire_on_close) ist richtig; der Rest ist nicht. –

8

india PHP Session-Unterstützung wurde in Laravel 4.1

fiel Start Um Lebensdauer einer Sitzung bearbeiten app/config/session.php und stellen Sie die folgende Konfiguration:

/* if this is set to 'native' it will use file. 
    if this is set to 'array' sessions will not persist across requests 
    effectively expiring them immediately. 
*/ 
'driver' => 'file' 

/* number of minutes after which the session is available for Laravel's 
    built in garbage collection. 
    Prior to 4.1 you could set this to zero to expire sessions when 
    the browser closes. See the next option below. 
*/ 
'lifetime' => 60 

/* If true sessions will expire when the user closes the browser. 
    This effectively ignores your lifetime setting above. 
    Set to false if you want Laravel to respect the lifetime value. 
    If your config file was written before 4.1 you need to add this. 
*/ 
'expire_on_close' => false, 

Referenzen:

Run artisan changes 4.1.* in der Befehlszeile die Notiz über die native Sitzung Fahrer gleichwertig zu file

$ artisan changes 4.1.* | grep -i native 
-> Native session driver has been replaced by 'file'. Specifying 'native' driver will just use the new file driver.