Laravel Passport Tutorial

Laravel Passport Tutorial
Flere autentiseringsfunksjoner implementeres i Laravel versjon 5.2. Ulike autentiseringssystemer er påkrevd for å implementere forskjellige ruter som var tidkrevende og ineffektive. Det samme autentiseringssystemet kan brukes til Web og Api Ved å bruke en tokenbasert autentiseringsfunksjon. Men dette autentiseringssystemet er ikke sikrere for applikasjonen. Nå kan autentiseringssystemet til Laravel -applikasjonen sikres ved å bruke det nye Pass Autentiseringsfunksjonen til Laravel. Den bruker to Env som er hemmelighetene til Laravel Passport Oauth API. Dette er api_client_id & api_client_secret. Et tilgangstoken genererer for hver bruker når Laravel pass brukes, og det lar brukeren få tilgang til noen sikre endepunkter. Hvordan du kan bygge et sikkert API -autentiseringssystem ved å bruke Laravel Passport og Access Authorised Content vises i denne opplæringen.

Fordeler ved å bruke Laravel Passport:

OAUTH2 -protokoll kan integreres med Laravel -applikasjonen ved å bruke Laravel -passordet. Når brukeren ønsker å hente eller sette inn data fra applikasjonen, vil tilgangsforespørselen bli sendt av denne protokollen. Tillatelsen vil bli gitt til brukeren ved å autorisere brukeren for tilgang. Noen store fordeler med passautentisering er nevnt nedenfor.

  • Pass -godkjenning er bedre enn Laravel standardgodkjenning fordi den også kan brukes til det eksterne nettstedet.
  • Normal API -autentisering kan bare brukes til å få tilgang til innholdet på Laravel -nettstedet der det er implementert. Men det eksterne nettstedet kan få tilgang til innholdet på Laravel -nettstedet med tillatelse fra den autentiserte brukeren og token.

Forutsetninger:

Du må gjøre følgende oppgave før du installerer og bruker Laravel Passport for brukergodkjenning.

  • Installer et nytt Laravel -prosjekt
  • Oppsett databasetilkobling

Installer Laravel Passport:

Kjør følgende kommando fra terminalen for å installere Laravel Passport -pakken ved hjelp av komponisten.

$ komponist krever laravel/pass

Du trenger å opprette Brukere Tabell i databasen før du installerer passpakken. Tre migrasjonsfiler og a Bruker Modellen har blitt generert automatisk når et nytt Laravel -prosjekt oppretter. En av dem brukes til å lage en Brukere bord. Gå til Laravel Project -mappen og kjør følgende migrate -kommando for å opprette Brukere bord.

$ php håndverker migrerer

Kjør følgende kommando for å installere passpakken for prosjektet.

$ PHP Artisan Passport: Installer

Du får følgende informasjon etter å ha installert Laravel Passport med hell i prosjektet ditt. Her genereres to hemmelige nøkler. En for Personlig tilgangsklient Og en annen for Passordstipendklient.

Laravel Passport -konfigurasjon:

Åpne Bruker modell som ligger på stedet, App \ modell.PHP fra en redaktør, og endre modellen som nedenfor. Legg til Laravel \ pass \ hasapitokens I begynnelsen av klassen og bruk hasapitokens og varsles i klassen.

namespace -app;
Bruk Illuminate \ Contracts \ Auth \ MustverifyEmail;
Bruk Illuminate \ Foundation \ Auth \ User som autentisk;
Bruk belysning \ varsler \ varsles;
// lagt til her
Bruk Laravel \ Passport \ Hasapitokens;
Klassebruker utvider autentiserbar

// modifisert her
bruk hasapitokens, varsles;
/**
* Attributtene som er masse tilordnede.
*
* @var -matrise
*/
beskyttet $ fillable = [
'Navn', 'e -post', 'passord',
];
/**
* Attributtene som skal skjules for matriser.
*
* @var -matrise
*/
beskyttet $ skjult = [
'passord', 'husk_token',
];
/**
* Attributtene som skal kastes til innfødte typer.
*
* @var -matrise
*/
beskyttet $ casts = [
'e -post_verified_at' => 'DateTime',
];

Neste, åpne App/leverandører/AuthServiceProvider.PHP For å registrere rutene som er nødvendige for å utstede og tilbakekalle tilgangstokener. Pass :: Ruter -metoden kalles innenfor oppstartsmetoden til AuthServiceProvider. Endre innholdet i filen vist nedenfor.

namespace app \ leverandører;
Bruk Illuminate \ Foundation \ Support \ Providers \ AuthServiceProvider som ServiceProvider;
Bruk Illuminate \ Support \ Facades \ Gate;
// Pass er lagt til her
Bruk Laravel \ Passport \ Passport;
klasse AuthServiceProvider utvider ServiceProvider

/** Policy -kartleggingene for søknaden.
*
* @var -matrise
*/
beskyttet $ policies = [
'App \ Model' => 'App \ Policies \ ModelPolicy',
];
/**
* Registrer eventuelle godkjennings- / autorisasjonstjenester.
*
* @return void
*/
offentlig funksjonsstart ()

$ this-> registerPolicies ();
Pass :: ruter ();
Pass :: TokenseXpireIn (nå ()-> adddays (15));
Pass :: RefreshTokenseXpirein (nå ()-> addays (30));

Neste, åpne Config \ App.PHP og sett inn følgende linje i leverandører Array for å inkludere nødvendig klasse for bruk av Laravel Passport.

Laravel \ Passport \ PassportServiceProvider :: Klasse,

Neste, åpne Config \ Auth.PHP og angi driveren av API til pass i Vakter Array vist nedenfor.

'Vakter' => [
'Web' => [
'Driver' => 'økt',
'leverandør' => 'brukere',
],
'api' => [
'Driver' => 'Pass',
'leverandør' => 'brukere',
'Hash' => falsk,
],
],

Implementere kontroller for registrering og autentisering:

Du må opprette en kontroller for implementering av autentiseringssystemet ved hjelp av passpakken. Kjør følgende kommando fra prosjektrot -mappen for å opprette Apicontroller.

$ PHP Artisan Make: Controller Apicontroller

I neste del av denne opplæringen blir tre metoder lagt til i Apicontroller For å opprette en ny bruker, autentisere en bruker og få detaljert informasjon fra en autentisert bruker.

EN. Registrere

En ny bruker kan opprettes til Brukere tabell ved å implementere en registrere() metode. Legg til følgende kode i Apicontroller For å implementere Register API. De nødvendige feltverdiene for å opprette ny bruker blir hentet av argumentet, $ forespørsel av metoden registrere(). Validator Klasse brukes til å sjekke feltverdiene er gyldige eller ikke basert på de definerte valideringsreglene. Hvis mislykkes () Metoden returnerer sann, da vil den returnere en feilmelding i JSON -format. Hvis mislykkes () Metode returnerer falsk, da vil et hasj passord generere og ny brukerinformasjon blir satt inn i brukertabellen. Et token vil bli generert etter å ha opprettet den nye brukeren og en suksessmelding med tokenverdi vil bli returnert.

offentlig funksjonsregister (forespørsel $ forespørsel)

/** Valider dataene ved hjelp av valideringsregler
*/
$ validator = validator :: make ($ request-> all (), [
'navn' => 'påkrevd',
'e -post' => 'påkrevd | e -post',
'passord' => 'påkrevd',
]);
/** Sjekk validering blir mislykkes eller ikke
*/
if ($ validator-> mislykkes ())
/** Returfeilmelding
*/
Retur Response ()-> json (['feil' => $ validator-> feil ()]);

/** Lagre alle verdiene på feltene
*/
$ newuser = $ request-> all ();
/** Opprett et kryptert passord ved hjelp av hasj
*/
$ newuser ['passord'] = hash :: make ($ newuser ['passord']);
/** Sett inn en ny bruker i tabellen
*/
$ bruker = bruker :: create ($ newuser);
/** Lag et tilgangstoken for brukeren
*/
$ suksess ['token'] = $ user-> createToken ('appname')-> accessToken;
/** RETURN SUCCESS MELDING MED TOKEN Verdi
*/
Retur Response ()-> JSON (['Success' => $ Success], 200);

B. Logg Inn:

Enhver bruker kan autentiseres ved å implementere Innloggingen () metode. Legg til følgende kode inne Apicontroller å implementere et påloggings -API. De nødvendige feltene for å autentisere en bruker hentes fra $ forespørsel av Innloggingen () metode. forsøk() metoden vil sjekke verdiene til e -post og passord for autentiseringen. Hvis verdiene samsvarer med verdiene til Brukere Tabell så blir posten til den aktuelle brukeren hentet og en tokenverdi blir returnert. Hvis autentiseringen mislykkes, så en Uautorisert Meldingen vil bli returnert.

Offentlig funksjon pålogging (forespørsel $ forespørsel)

/** Les legitimasjonene som er gitt av brukeren
*/
$ legitimasjon = [
'e-post' => $ forespørsel-> e-post,
'passord' => $ forespørsel-> passord
];
/** Sjekk legitimasjonen er gyldige eller ikke
*/
if (autor ()-> forsøk ($ legitimasjon))
/** Lagre informasjonen til autentisert bruker
*/
$ bruker = autor :: bruker ();
/** Opprett token for den autentiserte brukeren
*/
$ suksess ['token'] = $ user-> createToken ('appname')-> accessToken;
Retur Response ()-> JSON (['Success' => $ Success], 200);
annet
/** Returfeilmelding
*/
Retur Response ()-> JSON (['Feil' => 'Uautorisert'], 401);

C. Brukerdetaljer

Du kan få detaljert informasjon fra enhver bruker etter autentisering ved å implementere bruker API. Legg til følgende kode i Apicontroller For å hente detaljert informasjon fra enhver autentisert bruker.

offentlig funksjon user_info ()

/** Hent informasjonen til den autentiserte brukeren
*/
$ bruker = autor :: bruker ();
/** Returnerer sine detaljer
*/
Retur Response ()-> JSON (['Success' => $ bruker], 200);

API -rute for kontrolleren:

Åpne ruter \ app.PHP Fil og endre innholdet med følgende koder for å definere påloggingsruten, registerveien og detaljeringsveien for API -tjenester.

/** rute for innlogging API*/
Rute :: POST ('LOGIN', 'APICONTROLLER@LOGIN');
/** rute for register API*/
Rute :: Post ('Register', 'apicontroller@register');
/** rute for detaljer bruker API*/
Rute :: Middleware ('Auth: API')-> Group (funksjon ()
Rute :: Post ('Details', 'Apicontroller@user_info');
);

Kjør følgende kommando for å starte Laravel Development Server.

$ PHP Artisan server

Test API -godkjenning ved bruk av Postman:

Postman er et veldig nyttig verktøy for å teste avslappende APIer. HTTP -forespørselen kan genereres veldig enkelt for å teste API -funksjonaliteter ved å bruke brukergrensesnittet til denne applikasjonen uten å skrive en stor mengde kode for å sende forespørsler. Postman kan håndtere forskjellige HTTP -forespørsler og verktøy for å utvikle APIer. Den har både betalte og gratis versjoner for Linux.

Installer Postman Agent:

Kjør følgende kommando fra terminalen for å installere en postmannsagent på Ubuntu.

$ sudo snap install postbud

Åpne applikasjonen etter installasjonen. Følgende grensesnitt vises etter å ha åpnet det nye vinduet til postbudet.

Testregister API:

Klikk på Opprett en forespørsel lenke for å åpne forespørselsvinduet. Laravel Development Server kjører i Port 8000 som standard som brukes her. Hvis du bruker en annen port, må du endre portnummeret i nettadressen din. POST-metoden er valgt fra rullegardinmenyen, og følgende URL brukes til å sende en API-forespørsel for Register API.

http: // localhost: 8000/api/register

Tre felt er definert som obligatoriske felt for Brukere Tabell for å opprette en ny bruker. Disse er Navn, e -post, og passord. Angi tre nøkler og verdier for disse feltene vist nedenfor og klikk på sende knapp. De registrere() Metode av Apicontroller vil bli innkalt i henhold til ruten hvis forespørselen sendes riktig.

Følgende svar vises hvis den nye brukerposten er satt inn i Brukere bord. Svarskoden, 200 indikerer at HTTP -forespørselen var vellykket og at et token genereres etter å ha satt inn den nye brukeren som vises i responsorganet i JSON -format.

Test påloggings -API:

Velg POST metode som Register API som vises før. Angi følgende URL i adresselinjen for å sende en API -forespørsel for påloggings -API.

http: // localhost: 8000/api/login

To felt er obligatoriske for å autentisere enhver bruker basert på postene til Brukere bord. Disse er e -post og passord. Angi to nøkler og verdier for disse feltene vist nedenfor og klikk på sende knapp. De Logg Inn() Metode av Apicontroller vil bli innkalt i henhold til ruten hvis forespørselen sendes riktig.

Følgende svar vises hvis brukeren er autentisert med hell basert på postene til Brukere bord. Svarskoden, 200 indikerer at HTTP -forespørselen var vellykket. Tokenverdien genereres etter å ha godkjent brukeren og returnerer responsorganet i JSON -format.

Du vil få følgende svarorgan når feil legitimasjon er gitt for å autentisere brukeren. 401 Feilkode genereres her for å indikere uautorisert tilgang.

Test brukerdetaljer API:

Noen overskriftsparametere er pålagt å sette opp før du sender forespørselen om detaljer API. Klikk på overskrifter Fanen i forespørselsdelen og legg til tre overskriftsverdier for å identifisere den autentiserte brukeren. Tokenverdien kopieres fra responskroppen og settes for autorisasjonsverdien.

Godta: søknad/json
Innholdstype: applikasjon/json
Autorisasjon:
eyj0exaioijkv1qilcjhbgcioijsuzi1nij9.eyjhdwqioiixiiwianrpijoindu3owuwnmewz
Je3ZwnMythHotKxndjkMMqwzdqxyzu4mgfimdm3otc4ntiwyza4ntjjztk2mwu4ngfkyje3odu
wmzc3otiwmzk3owvmntkilcjpyxqioje1otkynzk3mtysim5izii6mtu5oti3otcxniwizxhwi
Joxnjmwode1nze2lcjzdwiioii1iiwic2nvcgvzijpbxx0.fjyvzfsid4wkcKlpz2-
w64uvook1dqmo_kblci7c00xqkhuqupvkgrulux3e2mjioj8et0mlngpuiffs8aet7w8koqccl
Szmkujot4fhonq5dyzmb4csaixfvokk8yrm4gpcq-b1ow5e9k5gcrlkmqnt9a6nywoghkxqq4ge
qhnhfgpnokmfjbtgukij3amta2i7qhcbwdit5o970ldm1ehw-aumeszfljdjfn6zkhk4kc93-
vlpzbgekh1xd0p1fjewyms590oiperuwvs1hfckpSnifyRob04TYTYPHDL25QWBW0M0VATQG9FH
7xgijfskys-fgmmUc7lglM8juVymzfv-o5xvrlq2eocjlhsofvkkufzw-j3yfkahbwy3oo4grd4
fowv2tgvdnf1zr_b11bdfdgv3rrl8mznhx9dhjafqubwedsnzbwouor9wy
VH0GI1FCIKWOWSM_BONATFITTR9ZQJKIWRQTKS3KVQSNCF8NIKXLP2DGAXDD8MWYWOQ34NLYHHP
0U2try_bffe3y_icgqvlbhcmewdixjism8l9ctlodgrqa3waqp11fv8cjfaip2mfz3uuvy6ndqar
kv6zrq9oE4ncsqvvxevp7rwofakpu7ecqnwvdoq4hz5j9twx8bz5eybmghvrxkqkHeie2j6gzt0-rburfm

Overskriftsdelen av forespørselsdelen vil bli sett ut som følgende bilde. Du må angi tokenverdien din som genereres i responsen for postbudsagenten din.

Deretter klikker du på Autorisasjon Fanen i forespørselsdelen og velg Bærer token som autorisasjonstype fra Type fall ned.

Velg nå POST metode, angi følgende URL i adresselinjen. Det vil kalle brukerinformasjon() Metode av Apicontroller som vil hente den detaljerte informasjonen til den autentiserte brukeren.

http: // localhost: 8000/api/detaljer

Hvis informasjonsverdien og overskriftsinformasjonen blir gitt riktig, vil detaljene til den brukeren bli returnert som et svarorgan i JSON -format som følgende bilde.

Videoopplæring

Konklusjon:

Pass -godkjenning bruker på mange Laravel -nettsteder nå for nyttige funksjoner. Det gjør Laravel -autentiseringssystemet sikrere enn standardgodkjenning og leverer andre tjenester som ikke er tilgjengelige i standardgodkjenning. Grunnbruken av Laravel Passport med installasjons- og konfigurasjonsprosessen er beskrevet i denne opplæringen riktig. Bruken av postmannsagenten vises også her for å teste API. Jeg håper leseren vil forstå funksjonalitetene i passpakken etter å ha lest denne opplæringen.