Godkendelse
advarsel du gennemser dokumentationen for en gammel version af Laravel. Overvej at opgradere dit projekt til Laravel 8.k.
- introduktion
- autentificering af brugere
- henter den autentificerede bruger
- beskyttelse af ruter
- HTTP grundlæggende godkendelse
- påmindelser om adgangskode & Nulstil
- Social godkendelse
introduktion
Laravel gør implementering af godkendelse meget enkel. Faktisk er næsten alt konfigureret til dig ud af kassen. Godkendelseskonfigurationsfilen er placeret på config/auth.php
, som indeholder flere veldokumenterede muligheder for at tilpasse godkendelsestjenesternes opførsel.
som standard indeholder Laravel en App\User
model i din app
mappe. Denne model kan bruges sammen med standard veltalende godkendelsesdriver.
Husk: når du bygger databaseskemaet for denne model, skal du oprette adgangskodekolonnen mindst 60 tegn. Før du går i gang, skal du også sørge for, at din users
(eller tilsvarende) tabel indeholder en nullbar, streng remember_token
kolonne med 100 tegn. Denne kolonne vil blive brugt til at gemme et token til “Husk mig” sessioner vedligeholdes af din ansøgning. Dette kan gøres ved at bruge $table->rememberToken();
i en migrering. Selvfølgelig sender Laravel 5 migrationer til disse kolonner ud af kassen!
hvis din ansøgning ikke bruger veltalende, kan du bruge database
authentication driver, der bruger Laravel forespørgsel builder.
autentificering brugere
Laravel skibe med to autentificering relaterede controllere ud af boksen. AuthController
håndterer ny brugerregistrering og “log ind”, mens PasswordController
indeholder logikken til at hjælpe eksisterende brugere med at nulstille deres glemte adgangskoder.
hver af disse controllere bruger et træk til at inkludere deres nødvendige metoder. For mange applikationer behøver du slet ikke at ændre disse controllere. De synspunkter, som disse controllere gengiver, findes i mappen resources/views/auth
. Du er fri til at tilpasse disse synspunkter, men du ønsker det.
Brugerregistratoren
for at ændre de formularfelter, der kræves, når en ny bruger registrerer sig med din ansøgning, kan du ændre klassen App\Services\Registrar
. Denne klasse er ansvarlig for validering og oprettelse af nye brugere af din applikation.
validator
metoden for Registrar
indeholder valideringsreglerne for nye brugere af applikationen, mens create
metoden for Registrar
er ansvarlig for at oprette nye User
poster i din database. Du er fri til at ændre hver af disse metoder, som du ønsker. Registrar
kaldes af AuthController
via metoderne indeholdt i AuthenticatesAndRegistersUsers
træk.
manuel godkendelse
hvis du vælger ikke at bruge den medfølgende AuthController
implementering, skal du administrere godkendelsen af dine brugere ved hjælp af Laravel-godkendelsesklasserne direkte. Bare rolig, det er stadig en cinch! Lad os først tjekke attempt
– metoden:
attempt
– metoden accepterer en række nøgle / værdipar som sit første argument. Værdien password
vil blive hashet. De andre værdier i arrayet bruges til at finde brugeren i din databasetabel. Så i eksemplet ovenfor vil brugeren blive hentet af værdien af kolonnen email
. Hvis brugeren findes, sammenlignes den hashede adgangskode, der er gemt i databasen, med den hashede password
– værdi, der overføres til metoden via arrayet. Hvis de to hashede adgangskoder matcher, startes en ny godkendt session for brugeren.
metoden attempt
vender tilbage true
hvis godkendelsen var vellykket. Ellers vil false
blive returneret.
Bemærk: i dette eksempel er
omdirigeringsfunktionen intended
omdirigerer brugeren til den URL, de forsøgte at få adgang til, før de blev fanget af godkendelsesfilteret. Der kan gives en URI til denne metode, hvis den tilsigtede destination ikke er tilgængelig.
autentificering af en bruger med betingelser
du kan også tilføje ekstra betingelser til godkendelsesforespørgslen:
if (Auth::attempt()){ // The user is active, not suspended, and exists.}
bestemmelse af, om en bruger er godkendt
for at afgøre, om brugeren allerede er logget ind på din applikation, kan du bruge metoden check
:
if (Auth::check()){ // The user is logged in...}
autentificering af en bruger og” huske “dem
hvis du gerne vil angive” Husk mig ” – funktionalitet i din applikation, kan du overføre en boolsk værdi som det andet argument til attempt
– metoden, som vil holde brugeren godkendt på ubestemt tid, eller indtil de manuelt logger ud. Selvfølgelig skal din users
tabel indeholde strengen remember_token
kolonne, som vil blive brugt til at gemme “Husk mig” token.
if (Auth::attempt(, $remember)){ // The user is being remembered...}
hvis du” husker “brugere, kan du bruge viaRemember
– metoden til at bestemme, om brugeren blev godkendt ved hjælp af” Husk mig ” – cookien:
if (Auth::viaRemember()){ //}
autentificering af brugere efter ID
for at logge en bruger ind i applikationen ved hjælp af deres ID skal du bruge metoden loginUsingId
:
Auth::loginUsingId(1);
validering af brugeroplysninger uden Login
metoden validate
giver dig mulighed for at validere en brugers legitimationsoplysninger uden faktisk at logge dem ind i applikationen:
if (Auth::validate($credentials)){ //}
logning af en bruger til en enkelt anmodning
du kan også bruge once
– metoden til at logge en bruger ind i applikationen til en enkelt anmodning. Ingen sessioner eller cookies vil blive brugt:
if (Auth::once($credentials)){ //}
manuel logning af en bruger
hvis du har brug for at logge en eksisterende brugerinstans i din applikation, kan du ringe til login
– metoden med brugerinstansen:
Auth::login($user);
dette svarer til at logge på en bruger via legitimationsoplysninger ved hjælp af attempt
– metoden.
logning af en bruger ud af applikationen
Auth::logout();
selvfølgelig, hvis du bruger de indbyggede Laravel-godkendelsescontrollere, leveres en controller-metode, der håndterer logning af brugere ud af applikationen, ud af kassen.
Godkendelseshændelser
når metoden attempt
kaldes, bliver begivenheden auth.attempt
fyret. Hvis godkendelsesforsøget er vellykket, og brugeren er logget ind, bliver auth.login
– begivenheden også fyret.
hentning af den godkendte bruger
når en bruger er godkendt, er der flere måder at få en forekomst af brugeren på.
for det første kan du få adgang til brugeren fra Auth
facaden:
for det andet kan du få adgang til den godkendte bruger via en Illuminate\Http\Request
instans:
for det tredje kan du skrive-tip Illuminate\Contracts\Auth\Authenticatable
kontrakten. Denne type-tip kan føjes til en controller konstruktør, controller metode, eller enhver anden konstruktør af en klasse løst af servicecontaineren:
beskyttelse af ruter
rute mellemvare kan bruges til kun at tillade godkendte brugere at få adgang til en given rute. Laravel leverer auth
mellemvaren som standard, og den er defineret i app\Http\Middleware\Authenticate.php
. Alt hvad du skal gøre er at vedhæfte det til en rutedefinition:
HTTP Basic Authentication
HTTP Basic Authentication giver en hurtig måde at godkende brugere af din applikation uden at oprette en dedikeret “login” – side. For at komme i gang skal du vedhæfte mellemvaren auth.basic
til din rute:
beskyttelse af en rute med HTTP Basic
Route::get('profile', );
som standard bruger basic
mellemvaren kolonnen email
på brugerposten som “brugernavn”.
opsætning af et STATLØST HTTP Basic-Filter
du kan også bruge HTTP Basic-godkendelse uden at indstille en brugeridentifikator-cookie i sessionen, hvilket er særligt nyttigt til API-godkendelse. For at gøre det skal du definere en mellemvare, der kalder onceBasic
– metoden:
public function handle($request, Closure $next){ return Auth::onceBasic() ?: $next($request);}
hvis du bruger PHP FastCGI, HTTP Basic-godkendelse fungerer muligvis ikke korrekt ud af boksen. Følgende linjer skal føjes til din .htaccess
fil:
RewriteCond %{HTTP:Authorization} ^(.+)$RewriteRule .* -
påmindelser om adgangskode & Nulstil
Model& tabel
de fleste internetapplikationer giver brugerne mulighed for at nulstille deres glemte adgangskoder. I stedet for at tvinge dig til at re-implementere dette på hver applikation, Laravel giver praktiske metoder til at sende påmindelser om adgangskode og udføre nulstilling af adgangskode.
for at komme i gang skal du kontrollere, at din User
model implementerer Illuminate\Contracts\Auth\CanResetPassword
kontrakten. Selvfølgelig implementerer User
– modellen, der er inkluderet i rammen, allerede denne grænseflade og bruger Illuminate\Auth\Passwords\CanResetPassword
– egenskaben til at inkludere de metoder, der er nødvendige for at implementere grænsefladen.
generering af Påmindelsestabeloverførslen
Dernæst skal der oprettes en tabel for at gemme tokens til nulstilling af adgangskode. Migreringen for denne tabel er inkluderet med Laravel ud af boksen og findes i mappen database/migrations
. Så alt hvad du skal gøre er at migrere:
php artisan migrate
Adgangskodepåmindelsescontroller
Laravel indeholder også en Auth\PasswordController
, der indeholder den logik, der er nødvendig for at nulstille brugeradgangskoder. Vi har endda givet visninger for at komme i gang! Visningerne er placeret i mappen resources/views/auth
. Du er fri til at ændre disse synspunkter, som du ønsker, så de passer til din egen applikations design.
din bruger modtager en e-mail med et link, der peger på getReset
– metoden for PasswordController
. Denne metode gengiver formularen til nulstilling af adgangskode og giver brugerne mulighed for at nulstille deres adgangskoder. Når adgangskoden er nulstillet, bliver brugeren automatisk logget ind i applikationen og omdirigeret til /home
. Du kan tilpasse omdirigeringsplaceringen efter nulstilling ved at definere en redirectTo
egenskab på PasswordController
:
protected $redirectTo = '/dashboard';
Bemærk: Som standard udløber tokens til nulstilling af adgangskode efter en time. Du kan ændre dette via
reminder.expire
i dinconfig/auth.php
fil.
Social godkendelse
ud over typisk formbaseret godkendelse giver Laravel også en enkel, bekvem måde at godkende med OAuth-udbydere ved hjælp af Laravel Socialite. Socialite understøtter i øjeblikket godkendelse med Facebook, Kvidre, Google, GitHub og Bitbucket.
for at komme i gang med Socialite skal du medtage pakken i din composer.json
fil:
"laravel/socialite": "~2.0"
registrer derefter Laravel\Socialite\SocialiteServiceProvider
i din config/app.php
konfigurationsfil. Du kan også registrere en facade:
'Socialize' => 'Laravel\Socialite\Facades\Socialite',
du bliver nødt til at tilføje legitimationsoplysninger til de OAuth-tjenester, din applikation bruger. Disse legitimationsoplysninger skal placeres i din config/services.php
konfigurationsfil og skal bruge nøglen facebook
, twitter
, google
, eller github
, afhængigt af de udbydere, din ansøgning kræver. For eksempel:
'github' => ,
dernæst er du klar til at godkende brugere! Du skal bruge to ruter: en til at omdirigere brugeren til OAuth-udbyderen og en anden til at modtage tilbagekaldelsen fra udbyderen efter godkendelse. Her er et eksempel ved hjælp af facaden Socialize
:
metoden redirect
tager sig af at sende brugeren til OAuth-udbyderen, mens metoden user
læser den indgående anmodning og henter brugerens oplysninger fra udbyderen. Før du omdirigerer brugeren, kan du også indstille “scopes” på anmodningen:
return Socialize::with('github')->scopes()->redirect();
når du har en brugerinstans, kan du få fat i et par flere detaljer om brugeren: