Jedno heslo pro více aplikací přes password_hash()
- Allconius
- Člen | 317
Ahoj,
mohl bych se zeptat, jak řešíte autorizaci uživatelů pokud mají mít
přístup do více aplikací ? Potřeboval bych jednu tabulku uživatel a hesel
pro více aplikací, vytvářím otisk hesla pomocí:
<?php
$options = [
'cost' => 12,
];
$password = password_hash($_POST["heslonove"], PASSWORD_BCRYPT, $options);
?>
ale přijde mi, že se do toho otisku zahrnuje i nějak URL aplikace kde to heslo vytvořím/změním, tj. v aplikaci domena/apl1 změním heslo a to se uloží do DB. Ale v aplikaci domena/apl2 pak dostanu při pokusu o přihlášení jiný otisk než mám uložený v DB i když heslo zadávám stejné … možná ale jen něco dělám špatně … zkoušel jsem zprovoznit ten vlastní autentikátor:
<?php
class MyAuthenticator implements NS\IAuthenticator
{
private $database;
private $passwords;
public function __construct(Nette\Database\Context $database, Nette\Security\Passwords $passwords)
{
$this->database = $database;
$this->passwords = $passwords;
}
public function authenticate(array $credentials): Nette\Security\IIdentity
{
[$username, $password] = $credentials;
$row = $this->database->table('users')
->where('username', $username)->fetch();
if (!$row) {
throw new Nette\Security\AuthenticationException('User not found.');
}
if (!$this->passwords->verify($password, $row->password)) {
throw new Nette\Security\AuthenticationException('Invalid password.');
}
return new Nette\Security\Identity($row->id, $row->role, ['username' => $row->username]);
}
}
?>
tam je ještě někde potřeba definovat, že „$row->password“ je v password_hash ? Nebo to bere automaticky ?
- MajklNajt
- Člen | 502
nepcháš tam to heslo do loginu zahashované, ako si to robil tu https://forum.nette.org/…nette-2-do-3 ?
druhá vec, prečo na hashovanie hesla používaš natívnu
password_hash
a na overovanie používaš službu
Nette\Security\Passwords
? rob to buď jednou alebo
druhou cestou
Editoval MajklNajt (20. 11. 2019 10:39)
- Allconius
- Člen | 317
MajklNajt napsal(a):
nepcháš tam to heslo do loginu zahashované, ako si to robil tu https://forum.nette.org/…nette-2-do-3 ?
druhá vec, prečo na hashovanie hesla používaš natívnu
password_hash
a na overovanie používaš službuNette\Security\Passwords
? rob to buď jednou alebo druhou cestou
Ahoj, máš pravdu promiň jsem jelito, neposílal jsem to heslo jako RAW jak jsi psal minule :-) už mi to funguje :-D To ‚password_hash‘ používám v neNettích projektech v nette to mám přes to Nette\Security\Passwords. Moc děkuji