Jedno heslo pro více aplikací přes password_hash()

Allconius
Člen | 313
+
0
-

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 | 471
+
+1
-

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 | 313
+
0
-

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žbu Nette\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