K cemu je session autoStart: smart?

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

K cemu je konfigurace v neonu

autoStart: smart

ktera si jenom zkontroluje zdali je session nastartovana a pokud neni manualne spusti start, kdyz v pripade pokusu o start session rovnou(autoStart: true) se stejne nenastartuje pokud uz nastartovana je. Neni teda tato option uplne zbytecna? Nebo mi neco unika…

Filip Procházka
Moderator | 4668
+
0
-

Ano uniká.

autoStart: smart znamená „session spusť pouze pokud existuje“ tzn, byla přijata platná sušenka se sessionId.

autoStart: true znamená „session zapni vždy, i kdyby ti stránku procházel robot, který sušenky zahazuje a zaspamuje ti úložiště“.

autoStart: false je myslím dostatečně výmluvné

Jan Endel
Člen | 1016
+
0
-

smart způsobí, že session se nastartuje teprve tehdy, až je k něčemu potřeba.

ZZromanZZ
Člen | 87
+
0
-

To by znamenalo, že by klientovi, který navštíví server poprvé nikdy nebyla vygenerována session… a to musí znamenat jedině to, že mi stále něco uniká …

hrach
Člen | 1834
+
0
-

@ZZromanZZ: unika ti to, ze pri prihlaseni, kdy pristupujes k session se sama nastatuje, kdyz ji potrebujes.

ZZromanZZ
Člen | 87
+
0
-

pilec napsal(a):

… až je k něčemu potřeba.

to znamená, až se s ní začne pracovat(zapisovat, atd…) ? Jako příklad uvedu statickou prezentaci, kde chci se session pracovat, pouze ke zjištění unikátních uživatelů( nastavit expiraci na dejme tomu 1 den, a pouze si někde logovat celkový počet přístupů). Chápu to tak, že s autoStart: smart mám smůlu, a musím si session nastartovat ručně

Aurielle
Člen | 1281
+
0
-

Nedíval jsem se do zdrojáků, ale myslím si, že při prvním použití se session nastartuje, pokud už nastartovaná není. Jinak přesně tohle chování bylo předtím v bootstrapu, a nikdo si na něj nestěžoval. Všem fungovalo. Proč teď?

Filip Procházka
Moderator | 4668
+
0
-

Prostě si tam dej true, když tě to tak bolí. Startování session funguje správně a dle očekávání.

ZZromanZZ
Člen | 87
+
0
-

Jenom mi nedochazel rozdil mezi autoStart: smart a true. Diky, uz je mi to jasne. Az je potreba == az k ni pristoupim pro zapsani, cteni atd… proste az je potreba

David Grudl
Nette Core | 8142
+
0
-

Přesně to píše HosipLan, formulace „až když je potřeba“ je nepřesná.

duke
Člen | 650
+
0
-

HosipLan napsal(a):

autoStart: smart znamená „session spusť pouze pokud existuje“ tzn, byla přijata platná sušenka se sessionId.

autoStart: true znamená „session zapni vždy, i kdyby ti stránku procházel robot, který sušenky zahazuje a zaspamuje ti úložiště“.

Právě jsem našel v error logu v jednom projektu chybu související s tím, že session nebyla automaticky nastartována (nejspíš to souvisí s výše popsaným chováním při nastavení autoStart: smart). Jde o přihlašovací stránku s formulářem který používá ochranu proti CSRF. Jak se nejlépe této chyby zbavit, aniž bych robotovi dovolil „zaspamovat mi úložiště“? Jde to vůbec? Nebo mi také něco uniká a problém je jinde? :-)

Filip Procházka
Moderator | 4668
+
0
-

V presenteru, který renderuje ten formulář, zavolej ve startup()

if (!$this->session->isStarted()) {
	$this->session->start();
}

Zapne se tedy, jenom pokud přijde na tuhle stranku, což by se stejně zapl (protože CSRF).

duke
Člen | 650
+
0
-

Díky. Také mě toto řešení napadlo (byť nevím do jaké míry zde platí, že mi roboti „nezaspamují úložiště“, ale jinak to asi nepůjde), akorát jsem to tedy měl v actionLogin a bez testu isStarted, ale možná je lepší dát to do startupu.

Šaman
Člen | 2635
+
0
-

Navazuji na staré vlákno, protože v tomhle je jádro pudla.

IE a Chrome (nikoliv FF, divný) mi na ostrém serveru (ne na localu) při zobrazení stránky s přihlašovacím formulářem chráněným metodou addProtection() hlásí chybu startu session, protože už něco odešlo na výstup. To něco, co odešlo je celá část šablony nad formulářem.
Zatím jsem to vyřešil v configu pomocí autoStart: true, ale zajímalo by mě, jaké je best practise. Startovat ručně ve startupu presenteru by šlo také, ale vzhledem k tomu, že každý uživatel systému musí být buď přihlášen, nebo se mu zobrazí přihlašovací formulář, myslím, že je to stejné jako startovat v configu.

Máte někdo s touhle chybou nějaké zkušenosti? Vypadá to, že záleží i na prohlížeči a nastavení serveru.

Filip Procházka
Moderator | 4668
+
0
-

Bylo by dobré mergnout hotové řešení, které na to už 9 měsíců čeká. Pokud tedy David nemá lepší nápad, jak to řešit :)