Problém s $user->isLoggedIn()

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

Ahojte chalani,

Dnes sme spustili projekt www.fitconnect.sk .

V pravom hornom rohu ak sa prihlásite, tak „Prihlásenie“ a „Regitrácia zmizne“ a nahradí sa to profilom. Dnes som sa prihlásil a behal po webe a zrazu mi zmizol profil a zobrazilo sa prihlásenie, tak som sa zarazil, že prečo ma odhlásilo, tak som preklikol na inú stránku a bol som prihlásený … hovorím si WTF? Tak sa teda vrátim naspať, kde ma „akože odhlásilo“ a po refreshi už mi $user->isLoggedIn vrátil true a zobrazil sa tam profil.

Spravilo mi to na viacerých šablónach a až po refreshi sa to opravilo. Viete mi porabiť, ako tento problém vyriešiť? Robí to ak sa prihlásite napr cez facebook a dáte sa „Domov“ tak som akože odhlásený až do refreshu.

Môže byť problém v cachovaní tohoto? A áno, cachce som pred nahodením premazal …

<?php
$user = $this->user;
$this->template->user = $user;
?>

Ďakujem za akúkoľvek pomoc …

trejjam
Backer | 65
+
0
-

Nejsem si jist, jestli jsem plně pochopil dotaz. Nicméně pokud se přihlásíš přes FB (přes AJAX) a nedáš si správné části do snippetů a ty nepřepíšeš tak skutečně do refreshe jsi „jakoby“ odhlášený.
To ovšem neřeší nepřihlášenost na dalších kartách v prohlížeči (nemůže). To samé platí o proklikávání historií, pro kterou některé prohlížeče ukládají původně zobrazenou stránku a nenačítají ji znovu. (Tedy opět jsi „jakoby“ odhlášený)

Oli
Člen | 1215
+
0
-

Ten kus kodu by na to neměl mít vliv. On by neměl mít vliv na nic, protože šablony defaultně obsahují proměnnou $user. Takže tyhle 2 radky duplikují funkcionalitu Nette.

Jedině, pokud by jsi tenhle kod mel v komponente a $this->user by obsahoval něco jiného než Nette\Security\User, případně tvoji implementaci té třídy.

iNviNho
Člen | 352
+
0
-

ak je teda defaultne v šablone, tak som to zmazal …

login proces:

<?php
public function login($form, $v, $text = NULL) {

	try {
	$user = $this->getUser();
	$user->login($v->mail, $v->heslo, $v->typ);
	    if (is_null($text)) {
		$this->redirect("Domov:");
	    } else {
		$this->flashMessage($text);
		$this->redirect("Domov:");
	    }

	} catch (NS\AuthenticationException $e) {
	   $this->flashMessage("Chyba pri prihlasovaní, opakujte prihlásenie, alebo sa zaregistrujte.", false);
           $this->redirect("Registracia:prihlasenie");
	}
    }
?>

Authenticator mám defaultný … Bol som teraz v škole, skúsil sa regnúť a zase na šablonach ako inštruktor som tam aj po prihlásení mal možnosť sa prihlásiť až kým som nerefreshol stránku … No skúsim dneska updatnúť verziu Nette, toto sa mi ešte nikdy nestalo

Môžeš sa, prosím, skúsiť regnúť a vyskúšať, či to robí aj tebe?

Editoval iNviNho (23. 3. 2015 16:45)