Hitelesítés
figyelem, a Laravel régi verziójának dokumentációját böngészi. Fontolja meg a projekt frissítését Laravel 8-ra.x.
- Bevezetés
- felhasználók hitelesítése
- a Hitelesített felhasználó visszakeresése
- útvonalak védelme
- HTTP alap hitelesítés
- jelszó emlékeztetők & Visszaállítás
- közösségi hitelesítés
Bevezetés
Laravel teszi végrehajtási hitelesítés nagyon egyszerű. Valójában szinte minden a dobozon kívül van konfigurálva. A hitelesítési konfigurációs fájl config/auth.php
címen található, amely számos jól dokumentált lehetőséget tartalmaz a hitelesítési szolgáltatások viselkedésének módosítására.
alapértelmezés szerint a Laravel tartalmaz egy App\User
modellt a app
könyvtárban. Ez a modell az alapértelmezett Eloquent authentication illesztőprogrammal használható.
ne feledje: a modell adatbázis-sémájának felépítésekor a jelszó oszlopot legalább 60 karakterből kell készíteni. Mielőtt elkezdené, győződjön meg arról, hogy a users
(vagy azzal egyenértékű) tábla tartalmaz egy nullable, string remember_token
oszlopot 100 karakterből. Ez az oszlop az alkalmazás által fenntartott “Emlékezz rám” munkamenetek tokenjének tárolására szolgál. Ezt a $table->rememberToken();
használatával lehet elvégezni egy áttelepítésnél. Természetesen a Laravel 5 szállítja a vándorlást ezekre az oszlopokra a dobozból!
ha az alkalmazás nem használja az Eloquent alkalmazást, használhatja a database
hitelesítési illesztőprogramot, amely a Laravel query builder-t használja.
felhasználók hitelesítése
a Laravel két hitelesítéshez kapcsolódó vezérlővel rendelkezik a dobozból. A AuthController
kezeli az új felhasználói regisztrációt és a “bejelentkezést”, míg a PasswordController
tartalmazza azt a logikát, amely segít a meglévő felhasználóknak az elfelejtett jelszavak visszaállításában.
ezen vezérlők mindegyike egy tulajdonságot használ a szükséges módszerek beillesztéséhez. Sok alkalmazás esetében egyáltalán nem kell módosítania ezeket a vezérlőket. A vezérlők által megjelenített nézetek a resources/views/auth
könyvtárban találhatók. Ön szabadon testre ezeket a nézeteket, ahogy szeretné.
a felhasználói regisztrátor
az új felhasználó regisztrációjához szükséges űrlapmezők módosításához módosíthatja a App\Services\Registrar
osztályt. Ez az osztály felelős az alkalmazás új felhasználóinak érvényesítéséért és létrehozásáért.
a validator
módszer a Registrar
tartalmazza az érvényesítési szabályok Az új felhasználók az alkalmazás, míg a create
módszer a Registrar
felelős új User
rekordokat az adatbázisban. Ön szabadon módosíthatja ezeket a módszereket, ahogy szeretné. A Registrar
– et a AuthController
hívja meg a AuthenticatesAndRegistersUsers
tulajdonságban található módszerekkel.
kézi hitelesítés
ha úgy dönt, hogy nem használja a megadott AuthController
megvalósítást, akkor közvetlenül a Laravel hitelesítési osztályokat használó felhasználók hitelesítését kell kezelnie. Ne aggódj, még mindig gyerekjáték! Először nézzük meg aattempt
módszert:
a attempt
módszer elfogadja a kulcs / érték párok tömbjét első argumentumként. A password
érték kivonatolásra kerül. A tömb többi értékét arra használják, hogy megtalálják a felhasználót az adatbázis táblájában. Tehát a fenti példában a felhasználó a email
oszlop értékével kerül lekérésre. Ha a felhasználó megtalálható, az adatbázisban tárolt kivonatolt jelszót összehasonlítjuk a tömbön keresztül a metódusnak átadott kivonatolt password
értékkel. Ha a két kivonatolt jelszó egyezik, egy új hitelesített munkamenet indul a felhasználó számára.
a attempt
metódus true
értéket ad vissza, ha a hitelesítés sikeres volt. Ellenkező esetben false
kerül visszaadásra.
megjegyzés: ebben a példában a
a intended
átirányítás funkció átirányítja a felhasználót arra az URL-re, amelyhez megpróbált hozzáférni, mielőtt a hitelesítési szűrő elkapta volna. Erre a módszerre tartalék URI adható, ha a tervezett rendeltetési hely nem áll rendelkezésre.
felhasználó hitelesítése
feltételekkel további feltételeket is hozzáadhat a hitelesítési lekérdezéshez:
if (Auth::attempt()){ // The user is active, not suspended, and exists.}
annak meghatározása, hogy a felhasználó hitelesített-e
annak megállapításához, hogy a felhasználó már be van-e jelentkezve az alkalmazásba, használhatja a check
módszert:
if (Auth::check()){ // The user is logged in...}
felhasználó hitelesítése és” megjegyzése ”
ha az alkalmazásban “Emlékezz rám” funkciót szeretne biztosítani, akkor a attempt
metódus második argumentumaként logikai értéket adhat át, amely a felhasználó hitelesítését határozatlan ideig, vagy a kézi kijelentkezésig megőrzi. Természetesen a users
táblának tartalmaznia kell a remember_token
karakterlánc oszlopot, amelyet az “Emlékezz rám” token tárolására használnak.
if (Auth::attempt(, $remember)){ // The user is being remembered...}
ha” emlékezik ” a felhasználókra, akkor az viaRemember
módszerrel megállapíthatja, hogy a felhasználót az “Emlékezz rám” cookie segítségével hitelesítették-e:
if (Auth::viaRemember()){ //}
felhasználók hitelesítése azonosító alapján
ha egy felhasználót azonosítója alapján szeretne bejelentkezni az alkalmazásba, használja a loginUsingId
módszert:
Auth::loginUsingId(1);
felhasználói hitelesítő adatok érvényesítése bejelentkezés nélkül
a validate
módszer lehetővé teszi a felhasználó hitelesítő adatainak érvényesítését anélkül, hogy ténylegesen bejelentkezne az alkalmazásba:
if (Auth::validate($credentials)){ //}
felhasználó naplózása egyetlen kéréshez
a once
módszerrel egyetlen kéréshez is bejelentkezhet egy felhasználót az alkalmazásba. Nincsenek munkamenetek vagy sütik:
if (Auth::once($credentials)){ //}
felhasználó kézi bejelentkezése
ha meglévő felhasználói példányt kell bejelentkeznie az alkalmazásba, akkor a login
metódust hívhatja meg a felhasználói példánymal:
Auth::login($user);
ez egyenértékű a attempt
módszerrel hitelesítő adatokkal történő bejelentkezéssel.
felhasználó naplózása az alkalmazásból
Auth::logout();
természetesen, ha a beépített Laravel hitelesítési vezérlőket használja, akkor a dobozból ki van adva egy vezérlő módszer, amely kezeli a felhasználók naplózását az alkalmazásból.
hitelesítési események
a attempt
metódus meghívásakor a auth.attempt
esemény aktiválódik. Ha a hitelesítési kísérlet sikeres, és a felhasználó be van jelentkezve, akkor a auth.login
esemény is aktiválódik.
a Hitelesített felhasználó lekérése
a felhasználó hitelesítése után többféle módon szerezhető be a felhasználó példánya.
először is hozzáférhet a felhasználóhoz a Auth
homlokzatról:
másodszor, hozzáférhet a hitelesített felhasználóhoz egy Illuminate\Http\Request
példányon keresztül:
harmadszor, beírhatja a Illuminate\Contracts\Auth\Authenticatable
szerződést. Ez a típus-tipp hozzáadható egy vezérlő konstruktorhoz, vezérlő módszer, vagy a service container által megoldott osztály bármely más konstruktora:
útvonalak védelme
a Route middleware segítségével csak hitelesített felhasználók férhetnek hozzá egy adott útvonalhoz. A Laravel alapértelmezés szerint a auth
köztes szoftvert biztosítja, és a app\Http\Middleware\Authenticate.php
definiálja. Mindössze annyit kell tennie, hogy csatolja az útvonaldefinícióhoz:
HTTP Basic Authentication
a HTTP Basic Authentication gyors módot kínál az alkalmazás felhasználóinak hitelesítésére dedikált “bejelentkezési” oldal beállítása nélkül. A kezdéshez csatolja az auth.basic
köztes szoftvert az útvonalához:
útvonal védelme HTTP Basic
Route::get('profile', );
alapértelmezés szerint a basic
köztes szoftver a felhasználói rekord email
oszlopát fogja használni “felhasználónévként”.
állapot nélküli HTTP Basic szűrő beállítása
HTTP Basic hitelesítést is használhat felhasználói azonosító süti beállítása nélkül a munkamenetben, ami különösen hasznos az API hitelesítéshez. Ehhez definiáljon egy köztes szoftvert, amely a onceBasic
metódust hívja:
public function handle($request, Closure $next){ return Auth::onceBasic() ?: $next($request);}
ha PHP FastCGI-t használ, előfordulhat, hogy a HTTP Basic hitelesítés nem működik megfelelően a dobozból. A következő sorokat kell hozzáadni a .htaccess
fájlhoz:
RewriteCond %{HTTP:Authorization} ^(.+)$RewriteRule .* -
jelszó emlékeztetők & Reset
modell & táblázat
a legtöbb webes alkalmazás lehetővé teszi a felhasználók számára az elfelejtett jelszavak visszaállítását. Ahelyett, hogy arra kényszerítené, hogy újra alkalmazza ezt az egyes alkalmazásoknál, a Laravel kényelmes módszereket kínál a jelszó emlékeztetők küldésére és a jelszó visszaállítására.
a kezdéshez ellenőrizze, hogy a User
modell végrehajtja-e a Illuminate\Contracts\Auth\CanResetPassword
szerződést. Természetesen a keretrendszerhez tartozó User
modell már megvalósítja ezt az interfészt, és a Illuminate\Auth\Passwords\CanResetPassword
tulajdonságot használja az interfész megvalósításához szükséges módszerek beépítéséhez.
az emlékeztető tábla migrációjának generálása
ezután létre kell hozni egy táblát a jelszó-visszaállítási tokenek tárolására. Ennek a táblának az áttelepítése a Laravel dobozon kívül található, és a database/migrations
könyvtárban található. Tehát csak annyit kell tennie, hogy vándorol:
php artisan migrate
jelszó emlékeztető vezérlő
a Laravel tartalmaz egy Auth\PasswordController
– ot is, amely tartalmazza a felhasználói jelszavak visszaállításához szükséges logikát. Még nézeteket is biztosítottunk a kezdéshez! A nézetek a resources/views/auth
könyvtárban találhatók. Ön szabadon módosíthatja ezeket a nézeteket, ahogy szeretné, hogy megfeleljen a saját alkalmazás design.
a felhasználó kap egy e-mailt egy linket, amely rámutat, hogy a getReset
módszer a PasswordController
. Ez a módszer teszi a jelszó-visszaállítási űrlapot, és lehetővé teszi a felhasználók számára a jelszavak visszaállítását. A Jelszó visszaállítása után a felhasználó automatikusan bejelentkezik az alkalmazásba, és átirányítja a /home
– ra. Testreszabhatja a visszaállítás utáni átirányítási helyet a redirectTo
tulajdonság megadásával a PasswordController
:
protected $redirectTo = '/dashboard';
Megjegyzés: alapértelmezés szerint a jelszó-visszaállítási tokenek egy óra elteltével lejárnak. Ezt a
reminder.expire
opcióval módosíthatja aconfig/auth.php
fájlban.
közösségi hitelesítés
a tipikus, űrlapalapú hitelesítés mellett a Laravel egy egyszerű, kényelmes módszert is kínál az OAuth szolgáltatókkal történő hitelesítéshez a Laravel Socialite használatával. Socialite jelenleg támogatja a hitelesítést a Facebook, Twitter, Google, GitHub és Bitbucket.
a Socialite használatának megkezdéséhez vegye fel a csomagot a composer.json
fájlba:
"laravel/socialite": "~2.0"
ezután regisztrálja az Laravel\Socialite\SocialiteServiceProvider
értéket a config/app.php
konfigurációs fájljában. Ön is regisztrálhat egy homlokzatot:
'Socialize' => 'Laravel\Socialite\Facades\Socialite',
meg kell adnia hitelesítő adatait az alkalmazás által használt OAuth szolgáltatásokhoz. Ezeket a hitelesítő adatokat a config/services.php
konfigurációs fájlban kell elhelyezni, és a kulcsot kell használni facebook
, twitter
, google
, vagy github
, az alkalmazás által igényelt szolgáltatóktól függően. Például:
'github' => ,
ezután készen áll a felhasználók hitelesítésére! Két útvonalra lesz szüksége: az egyik a felhasználó átirányítása az OAuth szolgáltatóhoz, a másik pedig a visszahívás fogadása a szolgáltatótól a hitelesítés után. Íme egy példa a Socialize
homlokzat használatával:
a redirect
módszer gondoskodik a felhasználó elküldéséről az OAuth szolgáltatóhoz, míg a user
módszer beolvassa a bejövő kérést, és lekéri a felhasználó adatait a szolgáltatótól. A felhasználó átirányítása előtt beállíthatja a” hatóköröket ” is a kérésre:
return Socialize::with('github')->scopes()->redirect();
ha van egy felhasználói példánya, megragadhat néhány további részletet a felhasználóról: