2 projekty 1 localhost – nemožnost být přihlášen na obou
- Pavel Kravčík
- Člen | 1195
2girls1cup nefunguje (pravděpodobně session, cookies)
Přihlásím se na projektu 1 a vše funguje. Stačí však refreshnout přihlašovací stránku na projektu 2 a odhlásí mě to na projektu 1. Být přihlášen na obou projektech neexistuje.
Session se ukládají zvlášť (každá do svého tempu).
session:
autoStart: smart
expiration: + 100 days
savePath: %tempDir%/sessions
Napadá mě jen PHPSESSID, které se mění. Tak jestli si ho Nette někam neukládá a neporovnává ho s aktuální a když použiji jinou stránku, tak ho změní a tím dojde k odhlášení i na druhém projektu?
Být přihlášen na dvou by se mi hodilo, protože přepisuji starší projekt.
- Pavel Kravčík
- Člen | 1195
Je to na localhostu. Dvě složky v rootu. Dvě různé databáze a ty projekty jsou na sobě 100% nezávislé.
Jediná věc, která mi napadla, že si ještě před definicí „temp/session“ něco Nette někam ukládá na „doménové“ úložiště. V tomto případě localhost.
Na ostré se to nikdy nestane, ale bylo by fajn, kdyby se to dalo nějak nastavit/opravit.
EDIT: Nebo myslíš, že by pomohl VirtualHost? To nerad nastavuji, jsem zvyklý na 127.0.0.1/xena/www :)
Editoval kzk_cz (3. 2. 2015 9:50)
- Marek Šneberger
- Člen | 130
Mělo by stačit v nějakém Tvém BasePresenteru nastavit
$this->user->getStorage()->setNamespace('nazevProjektu'); // samozřejmě pro každý projekt jiný namespace :-)
A nebo z toho udělat VirtualHost :)
Editoval Marek Šneberger (3. 2. 2015 10:11)
- bazo
- Člen | 620
prepisuje sa ti cookie so session id. najlepsie riesenie su virtualhosty. user storage namespace je vhodnejsi ked chces oddelit prihlasenie napr do admin modulu od normalnych uzivatelov.
ked budes mat viac projektov, budes musiet v kazdom bude nastavovat session
name, alebo ten namespace.
preto sa mi zda vhodnejsi virtualhost
- Pavel Kravčík
- Člen | 1195
Jasně, díky všem za rady. Udělám si VirtualHosty.
Myslel jsem, že něco jak píše Marek se děje automaticky.
- Šaman
- Člen | 2659
Taky jsem líný dělat virtualhosty, ale protože mám na localhostu vždy
stejného testovacího uživatele, tak jsem naopak přihlášený
i v aplikaci, ve které ani nemám zprovozněnou přihlašovací stránku
:)
Jen je potřeba o tomhle vědět a třeba při složitější práci se session
ten virtualhost vytvořit.
Teď jsme ale nazazili na jiný zajímavý problém. V testovacím provozu už na ostrém serveru vzniklo několik účtů, po testovací době jsme vymazali databázi a najednou nám někdo zapisoval do databáze, i když daný uživatel neexistoval. To byl teprve hon na ducha :) A onen duch byl právě uložený v session. Někdo, kdo měl dříve testovací účet, zůstal přihlášený od minula (takže v tu dobu jako neexistující uživatel) a vesele pracoval dál. :)
- Jan Suchánek
- Člen | 404
@Šaman: a jak jste to fixli to by chtělo mít možnost odhlásit všechny uživatele, podle nějakého data?
- Jan Mikeš
- Člen | 771
Marek Šneberger napsal(a):
Mělo by stačit v nějakém Tvém BasePresenteru nastavit
$this->user->getStorage()->setNamespace('nazevProjektu'); // samozřejmě pro každý projekt jiný namespace :-)
A nebo z toho udělat VirtualHost :)
Stejne reseni pres neon:
services:
nette.userStorage:
setup:
- setNamespace("AppName")
- David Matějka
- Moderator | 6445
Ja mam nastaveny dynamicky vhost, spusteny lokalni dns a vsechno jede hned beze zmen… ;)
- Jan Suchánek
- Člen | 404
@Lexi ok, jasný a kdybych to chtěl udělat nějak slušněji? Omlouváme se, ale byl jste odhlášen kvuli aktualizaci na serveru prosíme, přihlašte se do svého účtu znova … ?
- Pavel Kravčík
- Člen | 1195
@jenicek: Přidal bych stav do tabulky uživatele. A při první kontrole session ho odhlásíš a k tomu přidáš flashMessage. Pak místo s prací „clear cache“ nastavíš všem uživatelům stav = ‚odhlasit+omluva‘.