Problém s $user->isLoggedIn()
- iNviNho
- Člen | 352
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
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
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
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)