Přihlašování a Nette\Security\AuthenticationException #2
- Manny7
- Člen | 67
Ahoj,
zkouším rozjet přihlašování podle jednoho z příkladů, který je tu
uveden na ofic. stránce. Implementuju toto přihlašování ve verzi PHP 5.3 a
řeším následující problém:
namespace Proj\Security;
use Nette\Object;
use Nette\Environment;
use Nette\Security\IAuthenticator;
use Nette\Security\Identity;
use Nette\Security\AuthenticationException;
class Authenticator extends Object implements IAuthenticator
{
public function authenticate(array $credentials)
{
$login = $credentials[self::USERNAME];
$row = \UserModel::getByEmail($login);
if (!$row) {
throw new AuthenticationException("Užívateľ s registračným emailom '$login' sa nenašiel!", self::IDENTITY_NOT_FOUND);
}
$config = Environment::getConfig('security');
$password = hash_hmac('sha256', $credentials[self::PASSWORD] . $row->salt , $config->hmacKey);
if ($row->password !== $password) {
throw new AuthenticationException("Zadali ste nesprávne heslo!", self::INVALID_CREDENTIAL);
}
return new Identity($row->name, $row->role);
}
}
Při pokusu o přihlášení dostanu chybové hlášení
„Nette\Security\AuthenticationException #2“ se zprávou „Zadali ste
nesprávne heslo!“. Heslo jsem zadal určitě správné. Toto chybové
hlášení mi vyskočí vždy o pokusu o přihlášení (je jedno, ať zadám
přihlašovací údaje správné či špatné).
Laděnka mi ukazuje na následující kousek kódu:
Line 26: if ($row->password !== $password) {
Line 27: throw new AuthenticationException("Zadali ste nesprávne heslo!", self::INVALID_CREDENTIAL);
Line 28: }
Asi mi nějaká podstata uniká, protože jsem si myslel, že přidáním komponenty „AuthenticationException“ se problém vyřeší, ale bohužel ne
EDIT: ještě si uvědomuji – zkusil jsem si do databáze uložit heslo bez zaheshování, zakomentoval jsem řádek, kde se uživatelem zadané heslo hashuje a při zadání správného hesla jsem se přihlásil (při zadání špatného hesla opět ona chybová hláška) – tak mě napadá, jestli nemůže být problém s hashováním toho hesla a náísledným porovnáváním
Editoval Manny7 (27. 7. 2010 20:33)