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.phpdefiniá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.expireopcióval módosíthatja aconfig/auth.phpfá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: