K cemu je session autoStart: smart?
- ZZromanZZ
- Člen | 87
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
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é
- ZZromanZZ
- Člen | 87
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ě
- Filip Procházka
- Moderator | 4668
Prostě si tam dej true
, když tě to tak bolí. Startování
session funguje správně a dle očekávání.
- duke
- Člen | 650
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
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).
- Šaman
- Člen | 2665
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
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 :)