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 email ikke en påkrævet mulighed, den bruges kun som et eksempel. Du skal bruge det kolonnenavn, der svarer til et “brugernavn” i din database.

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 authmellemvaren 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 din config/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:

henter brugeroplysninger