„Laravel“ paso naudojimo pranašumai:
OAUTH2 protokolas gali būti integruotas su „Laravel“ programa naudojant „Laravel“ slaptažodį. Kai vartotojas nori gauti ar įterpti duomenis iš programos, prieigos užklausa bus siunčiama šiuo protokolu. Leidimas bus suteiktas vartotojui suteikiant prieigą. Kai kurie pagrindiniai paso autentifikavimo pranašumai yra paminėti žemiau.
- Paso autentifikavimas yra geresnis nei numatytasis „Laravel“ autentifikavimas, nes jis gali būti naudojamas ir išorinei svetainei.
- Įprastas API autentifikavimas gali būti naudojamas norint pasiekti „Laravel“ svetainės turinį tik ten, kur jis įgyvendinamas. Bet išorinė svetainė gali pasiekti „Laravel“ svetainės turinį su patvirtinto vartotojo leidimu ir prieigos raktu.
Būtinos sąlygos:
Prieš įdiegdami ir naudodami „Laravel Passport“ vartotojo autentifikavimui, turite atlikti šią užduotį.
- Įdiekite naują „Laravel“ projektą
- Nustatyti duomenų bazės ryšį
Įdiekite „Laravel“ pasą:
Paleiskite šią komandą iš terminalo, kad įdiegtumėte „Laravel Passport“ paketą naudodami kompozitorių.
$ kompozitorius reikalauja laravel / pasoReikės sukurti vartotojų lentelę duomenų bazėje prieš įdiegiant paso paketą. Trys perkėlimo bylos ir a Vartotojas modelis buvo sukurtas automatiškai, kai sukuriamas naujas „Laravel“ projektas. Vienas jų naudojamas kuriant a vartotojų stalo. Eikite į „Laravel“ projekto aplanką ir paleiskite šią komandą, kad sukurtumėte vartotojų stalo.
$ php amatininkai migruojaNorėdami įdiegti projekto paso paketą, vykdykite šią komandą.
amatininko pasas $ php: įdiekiteSėkmingai įdiegę „Laravel“ pasą savo projekte, gausite šią informaciją. Čia sugeneruojami du slapti raktai. Vienas už asmeninės prieigos klientas o kitas už slaptažodžio suteikimo klientas.
„Laravel“ paso konfigūracija:
Atidaryk Vartotojas modelis, kuris yra toje vietoje, Programos \ modelis.php iš redaktoriaus ir modifikuokite modelį, kaip nurodyta toliau. Papildyti Laravel \ Passport \ HasApiTokens klasės pradžioje ir klasės viduje naudokite HasApiTokens ir Notifiable.
vardų srities programa;naudokite „Illuminate \ Contracts \ Auth \ MustVerifyEmail“;
kaip „Authenticatable“ naudokite „Illuminate \ Foundation \ Auth \ User“;
naudokite „Illuminate \ Notifications \ Notifiable“;
// Pridėta čia
naudoti Laravel \ Passport \ HasApiTokens;
klasės vartotojas išplečia autentifikavimo galimybę
// Pakeista čia
naudoti „HasApiTokens“, „Notifiable“;
/ **
* Masės priskirtini atributai.
*
* @var masyvas
* /
apsaugotas $ fillable = [
„vardas“, „el. paštas“, „slaptažodis“,
];
/ **
* Atributai, kurie turėtų būti paslėpti masyvams.
*
* @var masyvas
* /
apsaugotas $ paslėptas = [
„slaptažodis“, „įsiminti_token“,
];
/ **
* Atributus, kurie turėtų būti perduoti vietiniams tipams.
*
* @var masyvas
* /
apsaugotas $ metimas = [
'email_verified_at' => 'datos laikas',
];
Tada atidarykite app / Providers / AuthServiceProvider.php registruoti maršrutus, kurie būtini norint išleisti ir atšaukti prieigos žetonus. „Passport :: route“ metodas vadinamas „boot“ metodu AuthServiceProvider. Pakeiskite žemiau pateikto failo turinį.
vardų srities programos \ teikėjai;kaip „ServiceProvider“ naudoti „Illuminate \ Foundation \ Support \ Providers \ AuthServiceProvider“;
naudokite „Illuminate \ Support \ Facades \ Gate“;
// čia pridedamas pasas
naudoti Laravel \ Passport \ Passport;
„AuthServiceProvider“ klasė praplečia „ServiceProvider“
/ ** Programos politikos susiejimas.
*
* @var masyvas
* /
apsaugota $ politika = [
'App \ Model' => 'Programa \ Policy \ ModelPolicy',
];
/ **
* Užregistruokite visas autentifikavimo / autorizavimo paslaugas.
*
* @return negalioja
* /
viešosios funkcijos įkrovimas ()
$ this-> registerPolicies ();
Pasas :: maršrutai ();
Pasas :: žetonaiExpireIn (now () -> addDays (15));
Pasas :: refreshTokensExpireIn (dabar () -> addDays (30));
Tada atidarykite config \ app.php ir įterpkite šią eilutę į teikėjai masyvas, apimantis būtiną „Laravel“ paso naudojimo klasę.
Laravel \ Passport \ PassportServiceProvider :: klasė,Tada atidarykite konfigūruoti \ auth.php ir nustatykite API tvarkyklę į pasas viduje konors sargybiniai masyvas parodyta žemiau.
„sargybiniai“ => ['internetas' => [
'driver' => 'sesija',
'Provider' => 'vartotojai',
],
„api“ => [
„vairuotojas“ => „pasas“,
'Provider' => 'vartotojai',
'hash' => klaidinga,
],
],
Įdiegti registravimo ir autentifikavimo valdiklį:
Turite sukurti valdiklį, kad įdiegtumėte autentifikavimo sistemą naudodami paso paketą. Norėdami sukurti, vykdykite šią komandą iš projekto šakninio aplanko „ApiController“.
$ php amatininkų gamintojas: valdiklis ApiControllerKitoje šios mokymo programos dalyje trys metodai pridedami „ApiController“ sukurti naują vartotoją, autentifikuoti vartotoją ir gauti išsamią autentifikuoto vartotojo informaciją.
A. Registruotis
Naujas vartotojas gali būti sukurtas vartotojų lentelę įgyvendinant a Registruotis() metodas. Pridėkite šį kodą viduje „ApiController“ įdiegti registro API. Būtinos lauko reikšmės kuriant naują vartotoją gaunamos argumentu, $ užklausa metodo Registruotis(). Tikrintojas klasė naudojama tikrinti, ar lauko vertės yra pagrįstos, ar ne pagal apibrėžtas patvirtinimo taisykles. Jei nepavyksta () metodas grąžina true, tada jis grąžins klaidos pranešimą JSON formatu. Jei nepavyksta () metodas grąžina klaidingą, tada sugeneruojamas maišos slaptažodis ir nauja vartotojo informacija bus įtraukta į vartotojų lentelę. Sukūrus naują vartotoją bus sukurtas prieigos raktas ir bus grąžintas sėkmės pranešimas su žetono verte.
viešųjų funkcijų registras („Request $ request“)/ ** Patvirtinkite duomenis naudodami patvirtinimo taisykles
* /
$ validator = Validator :: make ($ request-> all (), [
'vardas' => 'būtinas',
'email' => 'reikalingas | el. paštas',
'slaptažodis' => 'reikalingas',
]);
/ ** Patikrinkite, ar patvirtinti nepavyksta, ar ne
* /
jei ($ validator-> nepavyksta ())
/ ** Grąžinimo klaidos pranešimas
* /
grąžinimo atsakymas () -> json (['error' => $ validator-> klaidos ()]);
/ ** Saugokite visas laukų reikšmes
* /
$ newuser = $ request-> visi ();
/ ** Sukurkite užkoduotą slaptažodį naudodamiesi maiša
* /
$ newuser ['password'] = Hash :: make ($ newuser ['password']);
/ ** Į lentelę įterpkite naują vartotoją
* /
$ user = User :: create ($ newuser);
/ ** Sukurkite prieigos prieigos raktą vartotojui
* /
$ success ['token'] = $ user-> createToken ('AppName') -> accessToken;
/ ** Grąžinkite sėkmės pranešimą su simboline verte
* /
grįžimo atsakymas () -> json (['sėkmė' => $ sėkmė], 200);
B. Prisijungti:
Bet kuris vartotojas gali būti patvirtintas diegiant prisijungti () metodas. Pridėkite šį kodą viduje „ApiController“ įdiegti prisijungimo API. Reikalingi laukai, skirti autentifikuoti vartotoją, gaunami iš $ užklausa apie prisijungti () metodas. bandymas () metodas patikrins paštu ir Slaptažodis autentifikavimui. Jei reikšmės sutampa su vartotojų lentelę, tada bus gautas konkretaus vartotojo įrašas ir grąžinama žetono vertė. Jei autentifikuoti nepavyksta, tada Neteisėtas pranešimas bus grąžintas.
viešosios funkcijos prisijungimas (užklausa „$ request“)/ ** Perskaitykite vartotojo perduotus kredencialus
* /
$ kredencialai = [
'email' => $ request-> el,
'password' => $ request-> slaptažodis
];
/ ** Patikrinkite, ar įgaliojimai galioja, ar ne
* /
jei (auth () -> bandymas ($ kredencialai))
/ ** Saugokite autentifikuoto vartotojo informaciją
* /
$ vartotojas = Auth :: vartotojas ();
/ ** Sukurkite autentifikuoto vartotojo prieigos raktą
* /
$ success ['token'] = $ user-> createToken ('AppName') -> accessToken;
grįžimo atsakymas () -> json (['sėkmė' => $ sėkmė], 200);
Kitas
/ ** Grąžinimo klaidos pranešimas
* /
grąžinimo atsakymas () -> json (['error' => 'neleistina'], 401);
C. Išsami vartotojo informacija
Išsamią bet kurio vartotojo informaciją galite gauti po autentifikavimo įdiegę „User API“. Įtraukite šį kodą į „ApiController“ gauti išsamią bet kurio autentifikuoto vartotojo informaciją.
viešoji funkcija user_info ()/ ** Gaukite autentifikuoto vartotojo informaciją
* /
$ vartotojas = Auth :: vartotojas ();
/ ** Grąžinti vartotojo duomenis
* /
grąžinimo atsakymas () -> json (['sėkmė' => $ vartotojas], 200);
Valdiklio API maršrutas:
Atidaryk maršrutai \ programa.php failas ir modifikuokite turinį šiais kodais, kad apibrėžtumėte API paslaugų prisijungimo maršrutą, registracijos maršrutą ir išsamią informaciją.
/ ** Prisijungimo API maršrutas * /Route :: post ('login', '[email protected]');
/ ** Registrų API maršrutas * /
Route :: post ('register', '[email protected]');
/ ** Išsamios vartotojo API maršrutas * /
Maršrutas :: tarpinė programinė įranga ('auth: api') -> grupė (funkcija ()
Route :: post ('details', '[email protected] _info');
);
Norėdami paleisti „Laravel“ kūrimo serverį, vykdykite šią komandą.
$ php amatininkas tarnaujaIšbandykite API autentifikavimą naudodami paštininką:
„Postman“ yra labai naudinga priemonė išbandyti RESTful API. HTTP užklausą galima sugeneruoti labai lengvai, kad būtų galima patikrinti API funkcijas, naudojant šios programos vartotojo sąsają, nerašant didelio kiekio kodo užklausoms siųsti. „Postman“ gali tvarkyti įvairias HTTP užklausas ir komunalines paslaugas, kad galėtų sukurti API. Jis turi ir mokamą, ir nemokamą „Linux“ versiją.
Įdiekite „Postman Agent“:
Paleiskite šią komandą iš terminalo, kad įdiegtumėte paštininko agentą „Ubuntu“.
$ sudo snap install paštininkasAtidarykite programą po įdiegimo. Ši sąsaja pasirodys atidarius naują paštininko langą.
„Test register“ API:
Spustelėkite sukurti užklausą nuoroda, kad atidarytumėte užklausos langą. „Laravel“ kūrimo serveris veikia uoste 8000 pagal nutylėjimą, kuris čia naudojamas. Jei naudojate kitą prievadą, turite pakeisti prievado numerį savo URL. Išskleidžiamajame meniu pasirenkamas POST metodas ir šis URL naudojamas siunčiant API užklausą dėl registro API.
http: // localhost: 8000 / api / register
Trys laukai apibrėžiami kaip privalomi vartotojų lentelę, kad sukurtumėte naują vartotoją. Šitie yra vardas, paštu, ir Slaptažodis. Šiems žemiau nurodytiems laukams nustatykite tris raktus ir reikšmes ir spustelėkite siųsti mygtuką. The Registruotis() metodas „ApiController“ bus paskambinta pagal maršrutą, jei užklausa bus išsiųsta tinkamai.
Šis atsakymas bus rodomas, jei naujas vartotojo įrašas bus sėkmingai įterptas į vartotojų stalo. Atsakymo kodas, 200 rodo, kad HTTP užklausa buvo sėkminga ir prieigos raktas generuojamas įterpus naują vartotoją, kuris rodomas atsakymo tekste JSON formatu.
Bandomoji prisijungimo API:
Pasirinkite POST metodas kaip Užregistruoti API kad parodyta anksčiau. Adreso juostoje nustatykite šį URL, jei norite siųsti API užklausą prisijungimo API.
http: // localhost: 8000 / api / login
Du laukai yra būtini norint patvirtinti bet kurį vartotoją pagal. Įrašus vartotojų stalo. Šitie yra paštu ir Slaptažodis. Šiems žemiau nurodytiems laukams nustatykite du raktus ir reikšmes ir spustelėkite siųsti mygtuką. The Prisijungti() metodas „ApiController“ bus paskambinta pagal maršrutą, jei užklausa bus išsiųsta tinkamai.
Šis atsakymas bus rodomas, jei vartotojas bus sėkmingai patvirtintas pagal. Įrašus vartotojų stalo. Atsakymo kodas, 200 rodo, kad HTTP užklausa buvo sėkminga. Pripažinimo vertė sukuriama autentifikavus vartotoją ir atsakymo tekstą grąžina JSON formatu.
Gausite šį atsakymo turinį, kai bus pateikti neteisingi prisijungimo duomenys vartotojo autentifikavimui. 401 čia sugeneruojamas klaidos kodas, nurodantis neteisėtą prieigą.
Išbandykite išsamią vartotojo informaciją API:
Kai kuriuos antraštės parametrus reikia nustatyti prieš siunčiant užklausą dėl išsamios API. Spustelėkite antraštes užklausos skyriaus skirtuką ir pridėkite tris antraštės reikšmes, kad atpažintumėte autentifikuotą vartotoją. Ženklo vertė nukopijuojama iš atsakymo teksto ir nustatoma prieigos teisės reikšmei.
Priimti: paraiška / jsonTurinio tipas: application / json
Leidimas:
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiNDU3OWUwNmEwZ
jE3ZWNmYThhOTkxNDJkMmQwZDQxYzU4MGFiMDM3OTc4NTIwYzA4NTJjZTk2MWU4NGFkYjE3ODU
wMzc3OTIwMzk3OWVmNTkiLCJpYXQiOjE1OTkyNzk3MTYsIm5iZiI6MTU5OTI3OTcxNiwiZXhwI
joxNjMwODE1NzE2LCJzdWIiOiI1Iiwic2NvcGVzIjpbXX0.fJYvzFsiD4WKcklpZ2-
w64UVOOk1DqMo_KbLCI7C00xQKhuQupVkgRULUx3e2mJIoJ8ET0MLngpUIFFS8Aet7W8KoQCcL
SzMKUjot4fhONQ5Dyzmb4csAIXFVoKK8YRm4gPCq-b1OW5e9K5gcrLKmqnt9a6nywoGHkXqq4GE
qHnHFgPnOkMfjbtGuKIj3aMtA2i7qHcbWdIt5O970LdM1ehW-AuMESZflJdjfN6zkHK4Kc93-
vLpZbgEKh1XD0p1fJEWyms590oIPERuWVS1hfCkpsnIFYRoB04TYTYPHdL25qwBW0m0VaTQG9fH
7xgiJFSkyS-FGmmUc7lglM8JUeVYmZfv-o5XVRlQ2EOCjLHSOFvKkuFzw-j3YfKaHBWY3Oo4gRD4
foWV2tGvDnF1zR_b11BDfDgv3rrl8mZNHx9DHjaFqUbWEdsnZbWouOR9wy
Vh0GI1fcIkWoWSM_BoNaTFittr9zqjkIWrQtKS3kVqsnCF8nIKXLp2dGaXdd8mWYWoq34NLYHhp
0u2TRy_BFFe3y_icgQVLBHcmEwdiXJISM8l9ctlodgRqA3wAQP11fV8cJfAIP2mfz3uUVY6nDqAr
kv6zRQ9oE4NCsqVvXeVp7RWOfakpu7EcQnwVDoq4hZ5j9tWx8bZ5eybMgHvRXkQKheie2j6Gzt0-rBUrFM
Užklausos dalies antraščių skyrius bus panašus į šį vaizdą. Turite nustatyti savo raktinę vertę, kuri sugeneruojama laiškininko agento atsakymo tekste.
Tada spustelėkite Leidimas užklausos skyriaus skirtuką ir pasirinkite Turėtojo žetonas kaip autorizacijos tipas iš Tipas išskleidžiamasis meniu.
Dabar pasirinkite POST metodą, adreso juostoje nustatykite šį URL. Tai vadins vartotojo_info () metodas „ApiController“ kad atgaus išsamią autentifikuoto vartotojo informaciją.
http: // localhost: 8000 / api / išsami informacijaJei prieigos rakto vertė ir antraštės informacija pateikiama tinkamai, išsami informacija apie tą vartotoją bus grąžinta kaip atsakymo turinys JSON formatu, kaip šis vaizdas.
Vaizdo įrašų pamoka
Išvada:
Paso autentifikavimas dabar naudojamas daugelyje „Laravel“ svetainių. Tai daro „Laravel“ autentifikavimo sistemą saugesnę nei numatytasis autentifikavimas ir teikia kitas paslaugas, kurių nėra pagal numatytąjį autentifikavimą. Pagrindiniai „Laravel“ paso naudojimo būdai su diegimo ir konfigūravimo procesu yra tinkamai aprašyti šioje pamokoje. Laiško agento naudojimas taip pat parodytas API bandymui. Tikiuosi, kad skaitytojas, perskaitęs šią pamoką, supras paso paketo funkcijas.