Autentizace

varování procházíte dokumentaci pro starou verzi Laravel. Zvažte upgrade projektu na Laravel 8.x.

  • Úvod
  • Ověřování Uživatelů
  • Načítání Ověřený Uživatel
  • Ochrana Trasy
  • HTTP Základní Ověřování
  • Heslo Připomenutí & Reset
  • Sociální Ověřování

Úvod

Laravel umožňuje provádění autentizace velmi jednoduché. Ve skutečnosti je téměř vše nakonfigurováno pro vás po vybalení z krabice. Konfigurační soubor ověřování je umístěn na config/auth.php, který obsahuje několik dobře zdokumentovaných možností pro vyladění chování autentizačních služeb.

ve výchozím nastavení obsahuje Laravel model App\User ve vašem adresáři app. Tento model lze použít s výchozím eloquent authentication driverem.

Nezapomeňte: při vytváření schématu databáze pro tento model vytvořte sloupec hesla alespoň 60 znaků. Také, Než začnete, ujistěte se, že vaše users (nebo ekvivalentní) tabulka obsahuje nulovací, řetězec remember_token sloupec 100 znaků. Tento sloupec bude použit k uložení tokenu pro relace „remember me“ udržované vaší aplikací. To lze provést pomocí $table->rememberToken(); v migraci. Samozřejmě, Laravel 5 lodě migrace pro tyto sloupce po vybalení z krabice!

Pokud vaše aplikace nepoužívá Výmluvný, můžete použít database ověřování ovladač, který používá Laravel query builder.

ověřování uživatelů

Laravel je dodáván se dvěma řadiči souvisejícími s ověřováním po vybalení z krabice. AuthController zpracovává registraci nového uživatele a „přihlášení“, zatímco PasswordController obsahuje logiku, která pomáhá stávajícím uživatelům resetovat zapomenutá hesla.

každý z těchto regulátorů používá vlastnost k zahrnutí svých nezbytných metod. Pro mnoho aplikací nebudete muset tyto řadiče vůbec upravovat. Pohledy, které tyto řadiče vykreslují, jsou umístěny v adresáři resources/views/auth. Ty jsou zdarma přizpůsobit tyto názory však budete chtít.

registrátor uživatelů

Chcete-li upravit pole formuláře, která jsou požadována, když se nový uživatel zaregistruje u vaší aplikace, můžete upravit třídu App\Services\Registrar. Tato třída je zodpovědná za ověřování a vytváření nových uživatelů vaší aplikace.

validator metoda Registrar obsahuje validační pravidla pro nové uživatele aplikace, zatímco create metoda Registrar je zodpovědný za vytváření nových User záznamy v databázi. Každou z těchto metod můžete libovolně upravovat. Registrar se nazývá AuthController pomocí metod obsažených ve znaku AuthenticatesAndRegistersUsers.

Ruční Ověřování

Pokud se rozhodnete použít za předpokladu, AuthController provádění, budete muset spravovat ověřování uživatelů pomocí Laravel ověřování tříd přímo. Nebojte se, je to stále hračka! Nejprve se podívejme na metodu attempt:

metoda attempt přijímá jako první argument pole párů klíč / hodnota. Hodnota password bude hash. Ostatní hodnoty v poli budou použity k nalezení uživatele v databázové tabulce. Takže ve výše uvedeném příkladu bude uživatel načten hodnotou sloupce email. Pokud je uživatel nalezen, bude hashované heslo uložené v databázi porovnáno s hodnotou hashed password předanou metodě prostřednictvím pole. Pokud se shodují dvě hashovaná hesla, bude pro uživatele spuštěna nová ověřená relace.

metoda attempt vrátí true, pokud byla autentizace úspěšná. V opačném případě bude false vráceno.

poznámka: v tomto příkladu email není požadovaná volba, používá se pouze jako příklad. Měli byste použít jakýkoli název sloupce, který odpovídá „uživatelskému jménu“ ve vaší databázi.

funkce přesměrování intended přesměruje uživatele na adresu URL, ke které se pokoušel získat přístup, než byl zachycen autentizačním filtrem. V případě, že zamýšlené místo určení není k dispozici, může být této metodě přiděleno nouzové URI.

Ověření Uživatele S Podmínkami

můžete také přidat další podmínky k ověření dotazu:

if (Auth::attempt()){ // The user is active, not suspended, and exists.}

Určení, zda Je Uživatel Ověřen

K určení, pokud uživatel je již přihlášen do aplikace, můžete použít check metoda:

if (Auth::check()){ // The user is logged in...}

Ověření Uživatele A „Zapamatování“

Pokud byste chtěli, aby „pamatovat si mě“ funkce v aplikaci, můžete předat hodnotu typu boolean jako druhý argument attempt metoda, které bude mít uživatel ověřen na dobu neurčitou, nebo dokud se ručně odhlásit. Vaše tabulka users musí samozřejmě obsahovat sloupec string remember_token, který bude použit k uložení tokenu „zapamatovat si mě“.

if (Auth::attempt(, $remember)){ // The user is being remembered...}

Pokud jste „zapamatování“ uživatele, můžete použít viaRemember metoda k určení, zda byl uživatel ověřen pomocí „pamatuj si mě“ cookie:

if (Auth::viaRemember()){ //}

Ověřování Uživatelů Podle ID

K přihlášení uživatele do aplikace pomocí jejich ID, použijte loginUsingId metoda:

Auth::loginUsingId(1);

Ověření Pověření Uživatele Bez Přihlášení

validate metoda umožňuje ověření uživatele pověření, aniž by ve skutečnosti přihlášení do aplikace:

if (Auth::validate($credentials)){ //}

Přihlášení Uživatele Na Jeden Požadavek

můžete také použít once metoda pro přihlášení uživatele do aplikace pro jeden požadavek. Žádné relace nebo soubory cookie, budou využity:

if (Auth::once($credentials)){ //}

Ruční Přihlášení Uživatele

Pokud potřebujete k přihlášení existujícího uživatele instance do vaší aplikace, můžete volat login metoda s uživatelem stupně:

Auth::login($user);

Toto je ekvivalent k přihlášení uživatele pomocí pověření pomocí attempt metoda.

Přihlášení Uživatele Z Aplikace

Auth::logout();

samozřejmě, pokud používáte vestavěný Laravel ověřování řadiče, řadič metodu, která zpracovává přihlášení uživatele z aplikace je k dispozici po vybalení z krabice.

autentizační události

při volání metody attempt bude událost auth.attempt vypálena. Pokud je pokus o ověření úspěšný a uživatel je přihlášen, bude vypálena také událost auth.login.

načítání ověřeného uživatele

jakmile je uživatel ověřen, existuje několik způsobů, jak získat instanci uživatele.

za Prvé, můžete přístup uživatele z Auth fasády:

za Druhé, můžete přístup ověřeného uživatele prostřednictvím Illuminate\Http\Request příklad:

za Třetí, můžete typ-tip Illuminate\Contracts\Auth\Authenticatable smlouvy. Tento tip typu může být přidán do konstruktoru řadiče, metody řadiče nebo jakéhokoli jiného konstruktoru třídy vyřešené servisním kontejnerem:

Protecting Routes

Route middleware lze použít k tomu, aby přístup k dané trase umožňoval pouze ověřeným uživatelům. Laravel ve výchozím nastavení poskytuje auth middleware a je definován v app\Http\Middleware\Authenticate.php. Vše, co musíte udělat, je připojit jej do trasy definice:

HTTP Základní Ověřování

HTTP Základní Ověřování poskytuje rychlý způsob, jak ověřit uživatele aplikace bez vytvoření specializované „přihlašovací“ stránku. Chcete-li začít, připojte auth.basic middleware k vaší trase:

ochrana trasy pomocí HTTP Basic

Route::get('profile', );

ve výchozím nastavení basic middleware použije sloupec email v záznamu uživatele jako „uživatelské jméno“.

Nastavení bez státní Příslušnosti HTTP Basic Filter

můžete také použít Základní Ověřování HTTP, bez nastavení uživatelského identifikátoru souboru cookie relace, což je zvláště užitečné pro ověřování API. Chcete-li tak učinit, definujte middleware, který volá metodu onceBasic :

public function handle($request, Closure $next){ return Auth::onceBasic() ?: $next($request);}

pokud používáte PHP FastCGI, HTTP Basic authentication nemusí fungovat správně po vybalení z krabice. Následující řádky by měly být přidány do .htaccess soubor:

RewriteCond %{HTTP:Authorization} ^(.+)$RewriteRule .* - 

Heslo Připomenutí & Reset

Model & Tabulka

Většina webových aplikací poskytují způsob, jak pro uživatele, aby obnovit své zapomenuté heslo. Spíše než nutit, abyste to znovu implementovali v každé aplikaci, Laravel poskytuje pohodlné metody pro odesílání připomenutí hesla a provádění resetování hesla.

Chcete-li začít, ověřte, že váš model User implementuje smlouvu Illuminate\Contracts\Auth\CanResetPassword. Samozřejmě, User model součástí rámce již implementuje toto rozhraní, a používá Illuminate\Auth\Passwords\CanResetPassword vlastnost obsahovat metody potřebné k implementaci rozhraní.

generování migrace tabulky připomenutí

dále musí být vytvořena tabulka pro uložení tokenů pro resetování hesla. Migrace pro tuto tabulku je součástí Laravel po vybalení z krabice a je umístěna v adresáři database/migrations. Takže vše, co musíte udělat, je migrovat:

php artisan migrate

Password Reminder Controller

Laravel také obsahuje Auth\PasswordController, který obsahuje logiku potřebnou k resetování uživatelských hesel. Dokonce jsme poskytli pohledy, které vám pomohou začít! Pohledy jsou umístěny v adresáři resources/views/auth. Ty jsou zdarma k úpravě těchto pohledů, jak si přejete, aby vyhovovaly návrhu své vlastní aplikace.

váš uživatel obdrží e-mail s odkazem, který ukazuje na metodu getReset PasswordController. Tato metoda vykreslí formulář pro obnovení hesla a umožní uživatelům resetovat svá hesla. Po resetování hesla bude uživatel automaticky přihlášen do aplikace a přesměrován na /home. Umístění přesměrování po resetování můžete přizpůsobit definováním vlastnosti redirectTo na PasswordController:

protected $redirectTo = '/dashboard';

poznámka: ve výchozím nastavení vyprší platnost tokenů pro resetování hesla po jedné hodině. Můžete to změnit pomocí volby reminder.expire v souboru config/auth.php.

Sociální Ověřování

kromě typické formy ověřování na základě, Laravel také poskytuje jednoduchý, pohodlný způsob ověřování OAuth poskytovatelů použití Laravel Prominent. Socialite v současné době podporuje ověřování pomocí Facebook, Twitter, Google, GitHub a Bitbucket.

Chcete-li začít se Socialitem, zahrňte balíček do souboru composer.json :

"laravel/socialite": "~2.0"

poté zaregistrujte Laravel\Socialite\SocialiteServiceProvider v konfiguračním souboru config/app.php. Můžete také zaregistrovat fasádu:

'Socialize' => 'Laravel\Socialite\Facades\Socialite',

budete muset přidat pověření pro služby OAuth, které vaše aplikace využívá. Tato pověření by měla být umístěna v konfiguračním souboru config/services.php a měla by používat klíč facebook, twitter, google, nebo github, v závislosti na poskytovatelích, které vaše aplikace vyžaduje. Například:

'github' => ,

dále jste připraveni ověřit uživatele! Budete potřebovat dvě trasy: jeden pro přesměrování uživatele na poskytovatele OAuth a druhý pro přijetí zpětného volání od poskytovatele po ověření. Zde je příklad použití fasády Socialize:

metoda redirect se stará o odeslání uživatele poskytovateli OAuth, zatímco metoda user přečte příchozí požadavek a načte informace uživatele od poskytovatele. Před přesměrováním uživatele, můžete také nastavit „obory“ na žádost:

return Socialize::with('github')->scopes()->redirect();

Jakmile máte uživatelské instance, můžete chytit pár detailů o uživateli:

Načítání Uživatelských údajů