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 email nem kötelező opció, csupán példaként szolgál. Bármilyen oszlopnevet használjon, amely megfelel az adatbázis “felhasználónevének”.

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.expire opcióval módosíthatja a config/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:

felhasználói adatok lekérése