Nefunkcni cross subdomain cookies

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

Mam nasledujici nastaveni v configu:

nette:
	session:
		savePath: '%appDir%/../temp/sessions'
		cookieDomain: ".foo.cz" # tecka na zacatku je schvalne
		expiration: 14 days

Backend modul mi bezi na admin. subdomene. Pokud zrusim nastaveni cookie_path vse je ok, jenze ja bych chtel aby mi $user->isLoggedIn() fungovalo i mimo admin subdomenu. Jak toho docilit? Resil jste nekdo podobny problem?

Aplikace se chova jako by cookies byly vyple – po prihlaseni chybi flashmessage, a prihlaseni jako takove se nekona, ihned redirect zpet na form. Avsak do /temp/sessions/… je vse zapsano uspesne vse tak jak ma byt.

greeny
Člen | 405
+
0
-

Já jsem podobný problém řešil tak, že všechny subdomény poháněla jedna instance Nette a v routeru jsem rozlišoval pomocí subdomén (v mém případě subdoména = modul, tzn blog.example.org/user/detail vedlo na BlogModule\UserPresenter::actionDetail())

Jan Mikeš
Člen | 771
+
0
-

Tak to mam take (nepocital jsem ani, ze by to slo resit jinak).

S routerem problem neni, proste jakmile zmenim cookie_domain z "" na cokoliv jineho, tak prestanou fungovat cookies a sessions v cele aplikaci.

Editoval Lexi (1. 4. 2014 1:11)

greeny
Člen | 405
+
0
-

No jestli existuje rozumný důvod, proč měnit cookie_domain, tak asi neporadím, ale mně to fungovalo bez jakékoliv změny v cookies nastavení. $user->isLoggedIn() vracel všude TRUE

Jan Mikeš
Člen | 771
+
0
-

A ty jsi provadel prihlaseni na hlavni domene a pote pracoval na subdomene? Ja totiz provadim prihlaseni rovnou na admin.* subdomene a na hlavni domene $user->isLoggedIn() vraci false. Udelam tedy maly test, provedu prihlaseni na hlavni domene a pote presmeruji na admin.* jestli tam bude vracet TRUE.

akadlec
Člen | 1326
+
+1
-

mám a funguje normal:

	nette:
		session:
			cookiePath		: "/"
			cookieDomain	: ".%domain%"

jo a v %domain% v parameters sekci mám podle prostředí nastavenou domenu, buď dev a nebo prod.

Editoval akadlec (1. 4. 2014 12:40)

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

Btw neměl jsi předtím tu cookieDomain nastavenou jinak? Mě se někdy stane, ež když to změním, tak mi to v prohlížeči stávkuje a musím ho buď pročistit cache, nebo jiný prohlížeč.

akadlec
Člen | 1326
+
0
-

imho je potřeba nastavit jak domain tak i path.

Jan Mikeš
Člen | 771
+
0
-

@Jiří Nápravník: mel, proto to pokazde zkousim v jinem prohlizeci, ktery nema zacachovani, jiank to zlobi

@akadlec: bohuzel bez rozdilu, sessions se ulozi, vse je ok, ale nette je proste neprecte, zkousim to tentokrat na localu s vhosty admin.mysite.local a mysite.local

Zkousel jsem to i bez savePath, jestli to neni zapricineno tim, bohuzel, jeste nejake tipy?

akadlec
Člen | 1326
+
0
-

a vytvořená cookie je nastavena jak?

Jan Mikeš
Člen | 771
+
0
-

jedna se mi o klasicke $user->login(..), nefungujou ani flashmessages, proste nic co by pracovalo se session a cookies

tom
Člen | 171
+
+1
-

Mám 2 Nette aplikace na dvou domenach (domena1.cz, domena2.cz) a snažím se docílit toho, že když se přihlásím na jedné z těchto aplikací a přejdu na druhou, tak abych byl přihlášen. Pokusil jsem se na obou nastavit toto …

	nette:
		session:
			cookiePath		: "/"
			cookieDomain	: "stejny-string"

Což mi sice vygeneruje pro obě Cookie stejne doménové jméno „stejny-string“ ale na obou aplikacích přestalo fungovat přihlášení, takže je to celé špatně.

Můžu se zeptat, lze situaci, kdy chci použít jedno přihlášení na více doménách takto vůbec použít?

Díky

akadlec
Člen | 1326
+
0
-

imho ne. z bezpčnostního hlediska nemůžeš předávat cookie mezi doménami. sso se řeší úplně jinak.

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

tohle cookie neumi. cookie je citelne jen z domeny, na ktere je vystaveno. hledej single sign-on