špatně zadané heslo – AuthenticationException
- kxm
- Člen | 10
Zdravím, prosím o pomoc s použitím AuthenticationException
v metodě authenticate mám v případě špatně zadaného hesla:
return new Nette\Security\AuthenticationException('Špatně zadané jméno nebo heslo.');
a v sign presenteru:
public function auth_success(Nette\Application\UI\Form $form) {
$values = $form->getValues();
$user = $this->getUser();
$user->setAuthenticator($this->authenticator);
try {
$user->login($values->username, $values->password);
$this->redirect("Overview:default");
} catch (Nette\Security\AuthenticationException $e) {
$this->flashMessage($e->getMessage());
$this->redirect('Sign:default');
}
}
a na webu dostávám server error
Argument 1 passed to Nette\Http\UserStorage::setIdentity() must be an instance of Nette\Security\IIdentity, instance of Nette\Security\AuthenticationException given, called in /opt/lampp/htdocs/monitor/vendor/nette/security/src/Security/User.php on line 87 and defined
Jak to, že mi to nepropadne do bloku catch?
- GEpic
- Člen | 566
Aurielle napsal(a):
@GEpic: byť je tebou navrhované řešení bezpečnější (imho by se uživatelům nikdy neměly ukazovat texty výjimek), tak spousta lidí si právě hodí výjimku s vlastním textem a tu pak předá do flash zprávičky (a tím dokáže rozlišovat různé chyby).
Ano, to jsem pochopil, šlo mi přímo o tento případ, kdy je chyba vlastně jasně daná a víme co se stane. Kdyby to byla jiná funkce, kde nevíme jaké vyjímky mohou naskytnout, pak je určitě dobré je odchytávat jinak, např v případě jakékoliv jiné exception uživateli flashnout „nastala chyba“ a chybu si pak lognout. :)
Editoval GEpic (7. 1. 2016 20:10)