Nette 2.2.6 – trvale prihlaseni

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Kurtas
Člen | 109
+
0
-

Ahoj,

po prechodu (z 2.0.X) na Nette 2.2.6 mi nefunguje trvale prihlaseni, resp. po restartu browseru se musim znova prihlasit

V config.neon mam

	nette:
		session:
			expiration: 370 days
			autoStart: true #zkousel jsem i smart
			save_path: "%tempDir%/../sessions"

V login formulari mam checkbox „pernament“ a kde upravuji expiraci nasledujicim zpusob

if(isset($values['pernament'])){
    if($values['pernament']->value == true){
        $user->setExpiration('+365 days', FALSE);
    }else{
        $user->setExpiration($config->expiry, true);
    }
}else{
    $user->setExpiration($config->expiry, true);
}

Z info o cookies vydim ze po prihlaseni ma cookie platnost Sun, 27 Dec 2015 12:04:29 GMT coz odpovida 370dni melo by to mit ale 365 ne? Kazdopadne po restartu browseru se musim prilhasit i tak.

h4kuna
Backer | 740
+
0
-

370 je správně, to kdy má který namespace expirovat tak ten čas už si nese s sebou. Pokud smažeš cookie tak se ti smažou všechna data co jsou v session.

Session se ti v adresáři vytváří?

Dojde ti to do správné větve podmínky?

<?php
if(isset($values['pernament']) && $values['pernament']->value) {
    $user->setExpiration('+365 days', FALSE);
} else {
    $user->setExpiration($config->expiry);
}
?>

BTW
370 bych nedával jelikož má každá session jeden soubor tak ti to může zahltit filesystem a zpomalit server. 14 dní je dostačujících.

Kurtas
Člen | 109
+
0
-

Session se vytvori, podminka je 100% splnena (overeno pres firelog) … jinak pro nas +14dni pro trvale prihlaseni malo, potrebujem ten rok at to usera neodhlasi … odmazavame session soubory ktere se nezmenily poslednich 30dni.

Jiří Nápravník
Člen | 710
+
+1
-

Ja teda nevim, ale poku odmazavas session soubory ktere se nezmenily pres 30 dni, tak to je v podstate totez, jako bys nastavil expiraci po triceti dnech… To defaultni chovani je totiz v nette tak, ze se jen PHPSESSID cookie nastavi delsi expirace, pokud se nemýlím. Lepsi je si tohle osetrit primo pres cookie sam.

h4kuna
Backer | 740
+
0
-

Kde ještě v kódu pracuješ se session? Nelikviduješ si ji na tom místě?

Jak píše @JiříNápravník pokud nastavíš expiraci na 30 dní tak pak se to maže samo podle mtimu.

Zkus si jiný příklad bez tvojí aplikace zda ti pamatování session funguje, pokud ano chyba je v aplikaci pokud ne chyba je na servru.

Editoval h4kuna (23. 12. 2014 14:01)

Kurtas
Člen | 109
+
0
-

Nevim cim to je ale najednou to zase zacalo fungovat :) zmenil jsem delku expirace na +30 dni a smazal jsem vsechny cookies v prohlizeci, nic jineho jsem neudelal. Nicmene koumanim session jsem zjistil ze Nette expiraci sliduje (posouva vzdy +30dni od posledniho requestu). To jsem nevedel a plne mi to vyhovuje :)

Kurtas
Člen | 109
+
0
-

Bohuzel mam stale problemy s tim trvalym prihlasenim.
Expiraci UserStorage mam pri trvalem prihlaseni nastavenou na +30dni. Nette platnost te cookie posouva kazdym requestem, funguje i zapamatovani si prihlaseni pokud zavru browser.

Pokud pracuji kazdy den tak zadny problem neni. Problem nastava pokud nepracuji vic jak 24h, pak jsem odhlasen a jako duvod Nette vraci User::INACTIVITY pritom cookies ma platnost az do brezna.

Dokaze nekdo poradit?

potapnik
Člen | 127
+
0
-

Podle mě to způsobuje nastavení serveru, které je nezávislé na nastavení aplikace.

Kurtas
Člen | 109
+
0
-

@potapnik co konkretne myslis? Garbage je vypla session.gc_probability=0 + jsem vypl na zkousku i odmazavani session souboru o kterem jsem psal (odmazavame session soubory starsi 30dni).