Při jakékoliv Exception mě aplikace odhlásí
- MelkorNemesis
- Člen | 36
Ahoj,
řeším zajímavý problém a absolutně netuším, čím by to mohlo
být.
Jsem přihlášený v aplikaci a jsem stále přihlášený, skrz všechny
requesty a stránky. Ale pokud na mě vyskočí jakákoliv exception (pro
priklad BadRequestException, DibiException, DibiDriverException), tak mě
aplikace vždy odhlásí. Je to docela otravné, zvlášť když programuju
sekci, kde je potřeba přihlášení.
prihlaseni z loginu:
<?php
try {
// pokusíme se přihlásit uživatele...
$this->presenter->user->setAuthenticator($this->presenter->context->frontAuthenticator);
$this->presenter->user->login($username, $password);
// ...a v případě úspěchu presměrujeme na další stránku
$this->presenter->application->restoreRequest($this->presenter->backlink());
$this->presenter->flashMessage('Login was successfull.','success');
$this->presenter->redirect('Homepage:');
} catch (\Nette\Security\AuthenticationException $e) {
$this->presenter->flashMessage('Login error: ' . $e->getMessage(), 'error');
}
?>
BasePresenter.php pro frontend
<?php
<?php
namespace FrontModule;
abstract class BasePresenter extends \BasePresenter
{
public function startup()
{
parent::startup();
# set user namespace
$this->user->setNamespace('front');
}
public function createComponentLoginForm()
{
return new \Forms\Front\Login($this, 'loginForm');
}
public function handleLogout()
{
$this->user->logout(true);
$this->flashMessage('Logout was successfull', 'success');
$this->redirect('this');
}
}
?>
\BasePresenter.php obsahuje jen jednu metodu, ktera na nic nema vliv
Nemate nekdo napad, cim by to mohlo byt?
Diky
Editoval MelkorNemesis (3. 8. 2011 13:26)
- pavelmlejnek
- Člen | 16
Taky mám tento problém. Momentálně při vývoji to moc neřeším, i když příjemné to není. Pokud někdo ozřejmí příčinu, budu jen rád :)
edit: doplním, že se tak děje jak na localhostu, tak na hostingu (savana)
Editoval pavelmlejnek (6. 8. 2011 10:55)
- pavelmlejnek
- Člen | 16
Takže trošku jsem zkoušel experimentovat. Vzal jsem sandbox a osekal ho na naprosté minimum.
přihlašovací metoda
public function authenticate(array $credentials)
{
return new \Nette\Security\Identity("jmeno");
}
a vše ostatní v podobném duchu.
V tomto případě mě aplikace po vyjímce neodhlásila (BadRequestException).
Vše testováno na poslední verzi Nette.
edit: v minified verzi problém zmizí a aplikace neodhlašuje
Editoval pavelmlejnek (7. 8. 2011 20:24)
- Bernard Williams
- Člen | 207
Nazdárek,
měl (mám) jsem stejný problém. Vzniklo to po přechodu na Nette 2Beta a hlavní příčinou bylo, že jsem používal ve své aplikaci vlastní proměnnou $user definovanou v BasePresenter, která se nejspíš prala s $this->getUser(). Po odstranění své proměnné $user a přepsání kódu na $this->getUser() se můj problém z 80% – 90% vyřešil, ale pořád ve zbylých 10% – 20% procent mě to při chybě odhlásí. Jak už bylo řečeno, během programování zabezpečené sekce je to hodně otravné, ale je to pořád lepší, než to bylo na úplném začátku po přechodu na Nette 2Beta.
Bernard
- MelkorNemesis
- Člen | 36
MelkorNemesis napsal(a):
Tak jsem stahl z gitu nejnovejsi verzi nette a tam uz je vse vporadku.
Tak omyl, pri dost pripadech to dela porad, ale uz to neni tak caste.