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 email ikke et nødvendig alternativ, det brukes bare som et eksempel. Du bør bruke hva kolonnenavnet tilsvarer en «brukernavn» i databasen.

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 filen config/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:

Henter Brukerdetaljer