Autentisering
ADVARSEL du leser dokumentasjonen for en gammel versjon Av Laravel. Vurder å oppgradere prosjektet Til Laravel 8.x.
- Introduksjon
- Godkjenne Brukere
- Hente Den Godkjente Brukeren
- Beskytte Ruter
- HTTP Enkel Godkjenning
- Passordpåminnelser & Tilbakestill
- Sosial Godkjenning
Introduksjon
Laravel Gjør Implementering Av Autentisering Veldig Enkelt. Faktisk er nesten alt konfigurert for deg ut av esken. Godkjenningskonfigurasjonsfilen er plassert på config/auth.php
, som inneholder flere godt dokumenterte alternativer for å tilpasse oppførselen til autentiseringstjenestene.
Som standard Inkluderer Laravel en App\User
– modell i app
– katalogen. Denne modellen kan brukes med standard Veltalende autentiseringsdriveren.
Husk: når du bygger databaseskjemaet for denne modellen, må du lage passordkolonnen minst 60 tegn. Før du begynner, må du også kontrollere at tabellen users
(eller tilsvarende) inneholder en nullerbar streng remember_token
kolonne med 100 tegn. Denne kolonnen vil bli brukt til å lagre et token for» husk meg » – økter som vedlikeholdes av søknaden din. Dette kan gjøres ved å bruke $table->rememberToken();
i en migrering. Selvfølgelig, Laravel 5 skip vandringer for disse kolonnene ut av boksen!
hvis programmet ikke bruker Veltalende, kan du bruke autentiseringsdriveren database
som bruker laravel query builder.
Godkjenne Brukere
Laravel leveres med to autentiseringsrelaterte kontrollere ut av esken. AuthController
håndterer ny brukerregistrering og «logg inn», mens PasswordController
inneholder logikken for å hjelpe eksisterende brukere med å tilbakestille sine glemte passord.
Hver av disse kontrollerne bruker en egenskap for å inkludere de nødvendige metodene. For mange applikasjoner trenger du ikke å endre disse kontrollerne i det hele tatt. Visningene som disse kontrollerne gjengir, er plassert i katalogen resources/views/auth
. Du står fritt til å tilpasse disse visningene slik du ønsker.
Brukerregistratoren
hvis du vil endre skjemafeltene som kreves når en ny bruker registrerer seg med programmet, kan du endre App\Services\Registrar
– klassen. Denne klassen er ansvarlig for å validere og opprette nye brukere av søknaden din.
validator
– metoden i Registrar
inneholder valideringsreglene for nye brukere av programmet, mens create
– metoden i Registrar
er ansvarlig for å opprette nye User
– poster i databasen. Du står fritt til å endre hver av disse metodene som du ønsker. Registrar
kalles av AuthController
via metodene i AuthenticatesAndRegistersUsers
– egenskapen.
Manuell Godkjenning
hvis du velger å ikke bruke den angitte AuthController
– implementeringen, må du administrere godkjenningen av brukerne ved å bruke Laravel-godkjenningsklassene direkte. Ikke bekymre deg, det er fortsatt en smal sak! Først, la oss sjekke ut metoden attempt
:
metoden attempt
aksepterer en rekke nøkkel / verdipar som sitt første argument. Verdien password
vil bli hashed. De andre verdiene i matrisen vil bli brukt til å finne brukeren i databasetabellen. Så, i eksemplet ovenfor, vil brukeren bli hentet av verdien av kolonnen email
. Hvis brukeren blir funnet, blir det hashede passordet som er lagret i databasen, sammenlignet med hashed password
– verdien som sendes til metoden via arrayet. Hvis de to hashede passordene samsvarer, startes en ny godkjent økt for brukeren.
metoden attempt
returnerer true
hvis godkjenningen var vellykket. Ellers vil false
bli returnert.
Merk: i dette eksemplet er
redirect-funksjonen vil omdirigere brukeren til NETTADRESSEN de forsøkte å få tilgang til før de ble fanget av autentiseringsfilteret. En reserve URI kan gis til denne metoden i tilfelle det tiltenkte målet ikke er tilgjengelig.
Godkjenne En Bruker Med Betingelser
du kan også legge til ekstra betingelser i godkjenningsspørringen:
if (Auth::attempt()){ // The user is active, not suspended, and exists.}
Finne Ut Om En Bruker Er Godkjent
hvis du vil finne ut om brukeren allerede er logget på programmet, kan du bruke metoden check
:
if (Auth::check()){ // The user is logged in...}
Godkjenne En Bruker Og» Huske » Dem
Hvis du vil gi «husk meg» – funksjonalitet i programmet, kan du sende en boolsk verdi som det andre argumentet til attempt
– metoden, som vil holde brukeren autentisert på ubestemt tid, eller til de logger ut manuelt. Selvfølgelig må tabellen users
inneholde strengen remember_token
kolonnen, som vil bli brukt til å lagre «husk meg» – token.
if (Auth::attempt(, $remember)){ // The user is being remembered...}
hvis du «husker» brukere, kan du bruke metoden viaRemember
for å avgjøre om brukeren ble godkjent ved hjelp av «husk meg» – informasjonskapselen:
if (Auth::viaRemember()){ //}
Godkjenne Brukere MED ID
hvis du vil logge en bruker i programmet MED ID-EN, bruker du metoden loginUsingId
:
Auth::loginUsingId(1);
Validere Brukerlegitimasjon Uten Pålogging
den validate
metoden lar deg validere en brukers legitimasjon uten å faktisk logge dem inn i programmet:
if (Auth::validate($credentials)){ //}
Logge En Bruker På For En Enkelt Forespørsel
du kan også bruke metoden once
til å logge en bruker på programmet for en enkelt forespørsel. Ingen økter eller informasjonskapsler vil bli brukt:
if (Auth::once($credentials)){ //}
Manuelt Logge På En Bruker
hvis du trenger å logge en eksisterende brukerforekomst i programmet, kan du ringe login
– metoden med brukerforekomsten:
Auth::login($user);
dette tilsvarer å logge på en bruker via legitimasjon ved hjelp av attempt
– metoden.
Logge En Bruker Ut Av Programmet
Auth::logout();
selvfølgelig, hvis du bruker den innebygde laravel autentiseringskontrollere, en kontroller metode som håndterer logging brukere ut av programmet er gitt ut av boksen.
Godkjenningshendelser
når metoden attempt
kalles, vil hendelsen auth.attempt
bli sparket. Hvis godkjenningsforsøket er vellykket og brukeren er logget på, vil hendelsen auth.login
også bli sparket.
Henter Den Godkjente Brukeren
Når en bruker er godkjent, er det flere måter å få en forekomst Av Brukeren på.
Først kan du få tilgang til brukeren fra fasaden Auth
For Det Andre kan du få tilgang til den godkjente brukeren via en Illuminate\Http\Request
– forekomst:
For Det Tredje kan du skrive inn Illuminate\Contracts\Auth\Authenticatable
-kontrakten. Denne type-hint kan legges til en controller konstruktør, controller metode, eller noen annen konstruktør av en klasse løst av servicebeholderen:
Beskytte Ruter
Rute mellomvare kan brukes til å tillate bare godkjente brukere å få tilgang til en gitt rute. Laravel gir mellomvaren auth
som standard, og den er definert i app\Http\Middleware\Authenticate.php
. ALT du trenger å gjøre er å legge det til en rutedefinisjon:
HTTP Enkel Godkjenning
HTTP Enkel Godkjenning gir en rask måte å godkjenne brukere av søknaden din uten å sette opp en dedikert «påloggingsside». For å komme i gang, fest mellomvaren auth.basic
til ruten:
Beskytte En Rute MED HTTP Basic
Route::get('profile', );
som standard vil basic
mellomvare bruke kolonnen email
i brukeroppføringen som «brukernavn».
Sette Opp ET STATSLØST HTTP Basic-Filter
Du kan også bruke HTTP Basic-Godkjenning uten å angi en brukeridentifikator-informasjonskapsel i økten, noe som er spesielt nyttig FOR API-godkjenning. For å gjøre dette, definer en mellomvare som kaller onceBasic
– metoden:
public function handle($request, Closure $next){ return Auth::onceBasic() ?: $next($request);}
HVIS DU bruker PHP FastCGI, KAN DET HENDE AT HTTP Basic-godkjenning ikke fungerer riktig ut av boksen. Følgende linjer skal legges til din .htaccess
fil:
RewriteCond %{HTTP:Authorization} ^(.+)$RewriteRule .* -
Passordpåminnelser & Tilbakestill
Modell & Tabell
de fleste webapplikasjoner gir brukerne mulighet til å tilbakestille sine glemte passord. Snarere enn å tvinge deg til å re-implementere dette på hvert program, Gir Laravel praktiske metoder for å sende passord påminnelser og utføre passord tilbakestilles.
kontroller at User
– modellen implementerer Illuminate\Contracts\Auth\CanResetPassword
– kontrakten for å komme i gang. Selvfølgelig implementerer User
– modellen som følger med rammeverket allerede dette grensesnittet, og bruker Illuminate\Auth\Passwords\CanResetPassword
– egenskapen til å inkludere metodene som trengs for å implementere grensesnittet.
Generering Av Påminnelsestabelloverføringen
deretter må det opprettes en tabell for å lagre tilbakestillingstokenene for passord. Overføringen for denne tabellen følger Med Laravel ut av boksen, og ligger i katalogen database/migrations
. Så alt du trenger å gjøre er å migrere:
php artisan migrate
Passordpåminnelseskontroller
Laravel inneholder også en Auth\PasswordController
som inneholder logikken som er nødvendig for å tilbakestille brukerpassord. Vi har selv gitt visninger for å komme i gang! Visningene er plassert i katalogen resources/views/auth
. Du står fritt til å endre disse visningene som du ønsker å passe din egen søknad design.
brukeren vil motta en e-post med en lenke som peker til getReset
– metoden for PasswordController
. Denne metoden vil gjengi tilbakestillingsskjemaet for passord og tillate brukere å tilbakestille passordene sine. Etter at passordet er tilbakestilt, blir brukeren automatisk logget inn i programmet og omdirigert til /home
. Du kan tilpasse plasseringen for viderekobling etter tilbakestilling ved å definere en redirectTo
– egenskap på PasswordController
:
protected $redirectTo = '/dashboard';
Merk: som standard utløper passord reset tokens etter en time. Du kan endre dette via alternativet
reminder.expire
i filenconfig/auth.php
.
Sosial Autentisering
I tillegg til typisk, skjemabasert autentisering, Gir Laravel også en enkel og praktisk måte å autentisere Med oauth-leverandører ved Hjelp Av Laravel Socialite. Socialite støtter for tiden godkjenning Med Facebook, Twitter, Google, GitHub og Bitbucket.
for å komme i gang Med Socialite, ta med pakken i filen composer.json
:
"laravel/socialite": "~2.0"
registrer deretter Laravel\Socialite\SocialiteServiceProvider
i konfigurasjonsfilen config/app.php
. Du kan også registrere en fasade:
'Socialize' => 'Laravel\Socialite\Facades\Socialite',
Du må legge til legitimasjon For oauth-tjenestene din søknad bruker. Disse legitimasjonene skal plasseres i konfigurasjonsfilen config/services.php
, og skal bruke nøkkelen facebook
, twitter
, google
, eller github
, avhengig av hvilke leverandører søknaden din krever. For eksempel:
'github' => ,
Deretter er du klar til å godkjenne brukere! Du trenger to ruter: en for å omdirigere brukeren Til oauth-leverandøren, og en annen for å motta tilbakeringingen fra leverandøren etter godkjenning. Her er et eksempel ved hjelp av fasaden Socialize
metoden redirect
tar seg av å sende brukeren Til oauth-leverandøren, mens metoden user
leser innkommende forespørsel og henter brukerens informasjon fra leverandøren. Før du omdirigerer brukeren, kan du også sette «scopes» på forespørsel:
return Socialize::with('github')->scopes()->redirect();
Når du Har en brukerforekomst, kan du ta noen flere detaljer om brukeren: