Nelze se authentikovat, chybná query
- Juan
- Člen | 2
Ahoj, mám metodu authenticate a v ní kód níže.. Ale když se chci registrovat, tak to vybere pouze dva.. Nesprávné sloupce a pak dále to už napíše, že se jedná o nesprávný jméno/heslo. Pomohl by mi někdo co mám špatně prosím?
public function authenticate(array $credentials): Nette\Security\IIdentity
{
[$username, $password] = $credentials;
$row = $this->database->table(self::TABLE_NAME)
->where(self::COLUMN_NAME, $username)
->fetch();
if (!$row) {
throw new Nette\Security\AuthenticationException('The username is incorrect.', self::IDENTITY_NOT_FOUND);
} elseif (!$this->passwords->verify($password, $row[self::COLUMN_PASSWORD])) {
throw new Nette\Security\AuthenticationException('The password is incorrect.', self::INVALID_CREDENTIAL);
} elseif ($this->passwords->needsRehash($row[self::COLUMN_PASSWORD])) {
$row->update([
self::COLUMN_PASSWORD => $this->passwords->hash($password),
]);
}
$arr = $row->toArray();
unset($arr[self::COLUMN_PASSWORD]);
return new Nette\Security\Identity($row[self::COLUMN_ID], $row[self::COLUMN_ROLE], $arr);
}
Tracy: http://prntscr.com/obb038
Editoval Juan (6. 7. 2019 8:55)
- Mysteria
- Člen | 797
Kód vypadá v pořádku. Z dotazů je vidět, že ti to našlo uživatele
Test
v databázi, takže to muselo selhat na ověření hesla.
Máš heslo v databázi správně? Tzn. vygenerové přes
$this->passwords->hash()
a má sloupec v databázi
nastavenou dostatečnou délku, aby se tam vešlo celé (minimálně
60 znaků)?