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
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 souboruconfig/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: