Cum se asigură un API REST cu Lumen

Lumen este fratele lui Laravel: un micro-cadru rapid și ușor pentru scrierea API-urilor RESTful. Cu doar un pic de cod, puteți utiliza Lumen pentru a construi un API securizat și extrem de rapid RESTful.

În acest tutorial video din cursul meu, Creați un API REST cu Lumen, veți învăța cum să utilizați mediul de autentificare integrat al lui Lumen pentru a vă asigura un API REST cu Lumen.

Videoclipul se referă la un cod dintr-un exemplu API pentru magazinul de muzică pe care l-am creat în cursurile anterioare ale cursului. Puteți vedea codul sursă complet din cursul de pe GitHub.

Cum se asigură un API REST cu Lumen

 

Autentificarea în Lumen

Securitatea este o parte foarte importantă nu doar a unui API web, ci a unei aplicații. Și, din păcate, implementarea autentificării poate fi un lucru dificil. Dar din fericire, autentificarea este integrată în Lumen, astfel încât tot ce trebuie să facem este să activați autentificarea și apoi să scrieți câteva linii de cod pentru a autentifica un utilizator și apoi câteva linii de cod pentru a proteja lucrurile pe care vrem să le protejăm.

În exemplul nostru, dorim să protejăm trei metode de la controlorul nostru de chitară. Acestea sunt metodele de creare, actualizare și ștergere. Acestea sunt lucruri la care trebuie să aibă acces doar un utilizator autentificat. 

Deci, haideți să începem prin a merge la dosarul bootstrap și deschiderea app.php. 

Există două afirmații pe care trebuie să le dezmintim. Primul este chemarea la routeMiddleware, care instalează un middleware de autentificare. Dorim, de asemenea, să ne înregistrăm furnizorul de servicii auth. A doua afirmație este $ App-> registru (App \ Providers \ AuthServiceProvider :: clasă);. Doar prin necomentarea acestor două afirmații, putem folosi acum autentificarea în aplicația noastră.

Acum vrem să remarcăm middleware-ul de autentificare. Deci, hai să mergem App \ Http \ Middleware \ Authenticate.php, și în interiorul acestei clase există o metodă numită mâner, iar această metodă se va executa înainte de metodele noastre protejate. 

Deci, de fiecare dată când solicităm metodele noastre de creare, actualizare sau ștergere, mijlocul de autentificare va fi folosit și acest lucru mâner se va numi metoda.

Dacă utilizatorul nu este autentificat, atunci acesta va returna un 401. În caz contrar, acesta va transmite cererea la următorul lucru care va procesa această solicitare. 

Deci, acesta este un lucru la care trebuie să ne uităm. Celălalt este în interiorul dosarului Furnizori și este AuthServiceProvider.php.

Acum, în partea de jos a acestui fișier este o metodă numită cizmă, și în interiorul cizmei este un apel la acest lucru viaRequest metodă. Aceasta este metoda care este responsabilă pentru autentificarea utilizatorului. Deci, aceasta va depinde de implementarea noastră. Și în această lecție, implementarea noastră va fi foarte simplă.

Ceea ce vom face este să verificăm un antet numit Api-Token. Și dacă este o anumită valoare, atunci vom spune că utilizatorul este autentificat. Pentru a spune că un utilizator este autentificat, trebuie să returnați o instanță de utilizator. Dacă vom reveni la zero, atunci înseamnă că utilizatorul nu este autentificat.

Deci, să mergem mai departe și să scriem acel cod. Voi comenta acest cod existent. Și primul lucru pe care îl vom face este să preluăm antetul Api-Token. Așa că vom folosi cererea noastră, vom numi metoda antetului și vom dori Api-Token. 

$ header = $ request-> header ("Api-Token");

Acum, permiteți-mi mai întâi să spun că nu este sigur. Cu siguranță ne-am dori să stocăm utilizatorii noștri într-o bază de date. Fiecare ar trebui să aibă propriile jetoane unice și, într-adevăr, ar trebui să lucrăm cu chei publice și private. Dar voi renunța la toate detaliile de implementare. Ceea ce vrem să vedem este modul în care middleware-ul de autentificare se conectează la aplicația noastră, astfel încât să reușim să lucrăm și apoi să implementați ceea ce vreți să implementați.

Deci, vom recupera antetul numit Api-Token. Și mai întâi de toate, să verificăm dacă avem ceva acolo. 

Acum, singurul alt lucru pe care trebuie să-l facem este să spunem unde vrem să folosim middleware-ul de autentificare. Putem face acest lucru într-o varietate de locuri.

Primul este când ne definim rutele. De exemplu, dorim să ne protejăm solicitarea de postare. Deci, în loc să ne scriem pe traseu ca și noi, am putea face asta. Este în esență același lucru, dar cel de-al doilea argument pe care l-am trecut la metoda postului va avea două chei și valori.

Așadar, fără a mai merge mai departe, am putea să mergem la Fiddler și să facem o cerere post și am putea vedea dacă aceasta ar fi protejată.

Unul dintre marile lucruri despre Fiddler este că acesta ține evidența tuturor solicitărilor pe care le-am făcut. Deci, trebuie doar să găsim unde am făcut o cerere POST. Și dacă vom încerca să executăm acest lucru, vom obține o sumă de 401. Dar dacă vom include antetul Api-Token și dacă îl vom stabili pe "păsările să zboare spre sud", atunci când facem această cerere, vom obține o sumă de 200, și știm deja că aceste date se află acum în baza de date.

Deci aceasta este prima opțiune. Dar a doua opțiune este de a specifica middleware-ul nostru în interiorul constructorului nostru de controlor. Deci, să comentăm codul pe care tocmai l-am scris și să folosim în schimb vechiul nostru traseu. 

Să mergem la controlorul nostru de chitară și să adăugăm următorul cod:

Deci, dacă ne întoarcem la Fiddler și dacă vom emite aceeași solicitare - hai să schimbăm valoarea la un strat și la marca pentru Fender - atunci vom vedea că mai funcționează. Așa că atunci când executăm această solicitare, obținem 200. Dacă scoatem Api-Tokenul, atunci primim o sumă de 401. 

Acum, să emităm, de asemenea, unele dintre celelalte cereri. Deci, să facem o cerere GET pentru ca noi să putem recupera chitara și să obținem codurile. Să scapăm de Api-Token doar pentru a vedea că funcționează fără nici un fel de autentificare. Și obținem ID de 1 și ID de 2. 

Deci, dacă ne întoarcem la compozitor, să facem o cerere PUT pentru chitara cu ID de 2.

Pentru datele pe care le vom trimite, marca va fi Fender, dar să schimbăm modelul de la un strat la un telecaster. Acum, fără Api-Token, acest lucru nu ar trebui să funcționeze. Deci, ori de câte ori executăm, obținem 401. Dar să adăugăm Api-Token și apoi valoarea, păsările zboară spre sud și cererea va reveni la 200. 

Deci, doar din motive de exhaustivitate, să facem o cerere DELETE. Să ștergem chitara cu un ID de 1. Ar trebui să ajungem la 200 și să reluăm cererea de a-și recupera chitara. Și ar trebui să avem doar unul și ar trebui să aibă un ID de 2. Marca este Fender, iar modelul este telecaster. 

Prin urmare, adăugarea autentificării la o aplicație Lumen este foarte, foarte simplă. În afară de adăugarea middleware-ului, cea mai mare parte a codului pe care trebuie să-l scrieți se află în interiorul AuthServiceProvider clasă. Trebuie să scrieți codul responsabil pentru autentificarea utilizatorului, dar odată ce ați terminat, aveți un API securizat.

Urmăriți cursul complet

În cursul complet, creați un API REST cu Lumen, vă voi arăta cum să începeți să construiți API-uri REST cu cadrul Lumen. Veți începe prin crearea unui mediu de dezvoltare Lumen și veți continua să construiți un API complet pentru un magazin de muzică, inclusiv rutarea, conectivitatea bazei de date MySQL și securitatea.

Cod