Nette: Proces přihlášení uživatele

Autentizace (přihlášení uživatele) představuje proces ověření identity uživatele, nejčastěji prostřednictvím porovnání zadaných přihlašovacích údajů oproti seznamu existujících uživatelů.

Ve frameworku Nette hrají roli v procesu autentizace následující části.

Objekt User obsluhuje přihlášení (login()) a odhlášení logout() uživatele a ověření, zda je uživatel stále přihlášen (isLoggedIn()).

Objekt Autentikátor, ověřuje zadané přihlašovací údaje uživatelem (authenticate()).

Objekt Identity obsahuje data uživatele.

Shrnutí procesu přihlášení uživatele

Akce presenteru volá metodu login($username, $password) třídy User. Ta pověří objekt třídy implementující rozhraní IAuthenticator. Ten ověří přihlašovací údaje proti seznamu existujících uživatelů a v případě úspěchu vrátí třídě User data o uživateli v podobě objektu třídy Identity.

Přihlášení uživatele – třída User

Objekt třídy Nette\Security\User se stará o autentizaci a autorizaci uživatele.

Současně udržuje identitu uživatele v session a využívá ji k autorizačním procesům.

Objekt získáme v presenteru zavoláním metody getUser,

$user = $this->getUser();

případně pomocí Dependency Injection.

Přihlášení uživatele

$user->login($username, $password);

Zjištění, zda je uživatel přihlášen

$user->isLoggedIn();

Odhlášení uživatele

$user->logout();

Před přihlášením lze pomocí metody setExpiration() nastavit dobu, po jejíž uplynutí bude uživatel odhlášen automaticky (vyprší session):

$user->setExpiration('30 minutes');

Důvod odhlášení

Metoda getLogoutReason() nám řekne důvod ohlášení.

$user->getLogoutReason();

Možnosti:

  • Vypršel časový limit (IUserStorage::INACTIVITY)
  • Uživatel zavřel prohlížeč (IUserStorage::BROWSER_CLOSED)
  • Odhlášení metodou logout() (IUserStorage::MANUAL)

Ověření uživatele – Autentikátor

Vlastní ověření správnosti zadaných přihlašovacích údajů provádí tzv. autentikátor.

  • Můžeme si napsat vlastní autentikátor, podle svých potřeb.
  • Velmi jednoduchý autentikátor (Nette\Security\SimpleAuthenticator) je přímo součástí frameworku Nette.
  • V sandboxu Nette je dodáván autentikátor v podobě třídy App\Model\UserManager.

Autentikátor implementuje rozhraní Nette\Security\IAuthenticator.
Rozhraní obsahuje jedinou metodu authenticate(), která vrací identitu uživatele v podobě objektu třídy Nette\Security\Identity, případně výjimku Nette\Security\AuthenticationException v případě neúspěšného ověření.

Identita uživatele – třída Identity

Obsahuje údaje o uživateli, které vrací autentikátor.

Objekt implementující rozhraní Nette\Security\IIdentity.
Výchozí implementaci představuje třída Nette\Security\Identity.

Získáme jej pomocí metody getIdentity() třídy User.

$user->getIdentity();

Pozor: v Nette je ve výchozím stavu identita uživatele zachována i po odhlášení uživatele. Viz. metoda logout() třídy User.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *