Samouczek paszportowy Laravel

Samouczek paszportowy Laravel
Wiele funkcji uwierzytelniania jest zaimplementowanych w Laravel w wersji 5.2. Do wdrożenia różnych tras, które były czasochłonne i nieefektywne. Ten sam system uwierzytelniania może być używany Sieć I API Korzystając z funkcji uwierzytelniania tokenu. Ale ten system uwierzytelniania nie jest bardziej bezpieczny dla aplikacji. Teraz system uwierzytelniania aplikacji Laravel można zabezpieczyć za pomocą nowego Paszport Funkcja uwierzytelniania Laravel. Wykorzystuje dwa env, które są tajemnicami API paszportu laravel. To są api_client_id & api_client_secret. Token dostępu generuje dla każdego użytkownika, gdy używany jest paszport Laravel i pozwala użytkownikowi uzyskać dostęp do niektórych bezpiecznych punktów końcowych. Jak zbudować bezpieczny system uwierzytelniania API za pomocą paszportu Laravel i dostępu do autoryzowanej treści są pokazane w tym samouczku.

Zalety korzystania z paszportu Laravel:

Protokół OAuth2 można zintegrować z aplikacją Laravel za pomocą hasła LaraVel. Gdy użytkownik chce odzyskać lub wstawić dane z aplikacji, żądanie dostępu zostanie wysłane przez ten protokół. Użytkownik zostanie przekazany przez użytkownika, upoważniając użytkownika do dostępu. Niektóre główne korzyści uwierzytelniania paszportowego są wymienione poniżej.

  • Uwierzytelnianie paszportu jest lepsze niż uwierzytelnianie domyślne Laravela, ponieważ może być używane również do witryny zewnętrznej.
  • Normalne uwierzytelnianie API może być używane do dostępu do zawartości witryny Laravel tylko tam, gdzie jest ona zaimplementowana. Ale strona zewnętrzna może uzyskać dostęp do treści witryny Laravel za zgodą uwierzytelnionego użytkownika i tokena.

Wymagania wstępne:

Musisz wykonać następujące zadanie przed zainstalowaniem i użyciem paszportu Laravel do uwierzytelniania użytkownika.

  • Zainstaluj nowy projekt Laravel
  • Konfiguracja połączenia bazy danych

Zainstaluj paszport Laravel:

Uruchom następujące polecenie z terminala, aby zainstalować pakiet paszportowy Laravel za pomocą kompozytora.

$ Composer wymaga laravel/paszport

Będziesz musiał utworzyć użytkownicy Tabela w bazie danych przed zainstalowaniem pakietu paszportowego. Trzy pliki migracyjne i Użytkownik Model został wygenerowany automatycznie, gdy tworzy nowy projekt Laravel. Jeden z nich służy do stworzenia użytkownicy tabela. Przejdź do folderu projektu Laravel i uruchom następujące polecenie migracyjne, aby utworzyć użytkownicy tabela.

Migruj migruj Artisan $

Uruchom następujące polecenie, aby zainstalować pakiet paszportowy dla projektu.

$ PHP Artisan paszport: Zainstaluj

Otrzymasz następujące informacje po pomyślnym zainstalowaniu paszportu Laravel w swoim projekcie. Tutaj generowane są dwa tajne klucze. Jeden dla klient osobisty i inny dla Klient dotacji hasła.

Konfiguracja paszportu Laravel:

Otworzyć Użytkownik Model, który znajduje się w lokalizacji, Model App \.php od edytora i zmodyfikuj model jak poniżej. Dodać Laravel \ paszport \ hasapitokens Na początku klasy i użyj Hasapitokens i możliwy do powiadamiania w klasie.

Aplikacja przestrzeni nazw;
Użyj Illuminate \ Contracts \ Auth \ MustverifyEMail;
Użyj Illuminate \ Foundation \ Auth \ Użytkownik jako autentyczny;
Użyj iluminate \ powiadomienia \ powiadomili się;
// dodano tutaj
Użyj laravel \ paszport \ hasapitokens;
Użytkownik klasy rozszerza autentyczne

// zmodyfikowane tutaj
Używaj Hasapitokens, możliwe do powiadamiania;
/**
* Atrybuty, które można przypisać masowo.
*
* @VAR Array
*/
Protected $ filebable = [
„Nazwa”, „e -mail”, „hasło”,
];
/**
* Atrybuty, które powinny być ukryte dla tablic.
*
* @VAR Array
*/
chronione $ ukryte = [
„Hasło”, „Remember_Token”,
];
/**
* Atrybuty, które należy rzucić na rodzime typy.
*
* @VAR Array
*/
chronione $ casts = [
„e -mail_verified_at” => „dataTime”,
];

Następnie otwórz App/dostawcy/authServiceProvider.php Aby zarejestrować trasy niezbędne do wydawania i odwołania tokenów dostępu. Metoda paszportu :: trasy wywoływane jest w metodzie rozruchu AuthserviceProvider. Zmodyfikuj zawartość pliku pokazanego poniżej.

APPSPAGE APP \ dostawcy;
Użyj Illuminate \ Foundation \ Support \ Providers \ AuthserviceProvider jako serviceProvider;
Użyj Illuminate \ Support \ faceades \ brama;
// paszport jest dodany tutaj
Użyj laravel \ paszport \ paszport;
klasa AuthserviceProvider rozszerza serwisProvider

/** Mapowania zasad dotyczących aplikacji.
*
* @VAR Array
*/
chronione zasady $ = [
„App \ model” => 'app \ polityki \ modelpolicy ”,
];
/**
* Zarejestruj wszelkie usługi uwierzytelniania / autoryzacji.
*
* @return void
*/
Funkcja publiczna ()

$ this-> rejestrupolity ();
Paszport :: trasy ();
Paszport :: tokensexpirein (teraz ()-> dodatki (15));
Paszport :: Refreshtokensexpirein (teraz ()-> dodatki (30));

Następnie otwórz config \ App.php i wstaw następującą linię w dostawcy tablica obejmująca niezbędną klasę do korzystania z paszportu Laravel.

Laravel \ paszport \ paszportServiceProvider :: klasa,

Następnie otwórz config \ auth.php i ustaw sterownik API na paszport w gwardia tablica pokazana poniżej.

„Strażnicy” => [
„Web” => [
„Sterownik” => „sesja”,
„Dostawca” => „Użytkownicy”,
],
„API” => [
„sterownik” => „paszport”,
„Dostawca” => „Użytkownicy”,
„Hash” => Fałsz,
],
],

Wdrożenie kontrolera rejestracji i uwierzytelnienia:

Musisz utworzyć kontroler do wdrożenia systemu uwierzytelniania za pomocą pakietu paszportowego. Uruchom następujące polecenie z folderu głównego projektu, aby utworzyć Apicontroller.

$ PHP Artisan Make: kontroler apicontoller

W następnej części tego samouczka dodano trzy metody w środku Apicontroller Aby utworzyć nowego użytkownika, uwierzytelnij użytkownika i uzyskać szczegółowe informacje uwierzytelnionego użytkownika.

A. Rejestr

Nowego użytkownika może zostać utworzony w użytkownicy Tabela poprzez wdrożenie rejestr() metoda. Dodaj następujący kod w środku Apicontroller Aby zaimplementować API rejestru. Niezbędne wartości pola tworzenia nowego użytkownika są pobierane przez argument, $ żądanie metody rejestr(). Waliator Klasa służy do sprawdzania wartości pola są prawidłowe lub nie na podstawie zdefiniowanych reguł walidacji. Jeśli upadek () Metoda zwraca true Wówczas zwróci komunikat o błędzie w formacie JSON. Jeśli upadek () Metoda zwraca false, wówczas hasło do skrótu wygeneruje, a nowe informacje o użytkowniku zostaną włożone do tabeli użytkowników. Token zostanie wygenerowany po utworzeniu nowego użytkownika, a komunikat sukcesu z wartością tokena zostanie zwrócony.

Rejestr funkcji publicznych (żądanie $ żądanie)

/** W sprawdzeniu danych za pomocą reguł walidacji
*/
$ validator = Validator :: Make ($ request-> all (), [
„Nazwa” => „Wymagane”,
„e -mail” => „wymagany | e -mail”,
„hasło” => „wymagane”,
]);
/** Sprawdź, czy sprawdzanie poprawności staje się niepowodzenie lub nie
*/
if ($ validator-> fails ())
/** Zwracaj komunikat o błędzie
*/
return response ()-> json (['error' => $ validator-> errors ()]);

/** Przechowuj wszystkie wartości pól
*/
$ newuser = $ request-> all ();
/** Utwórz zaszyfrowane hasło za pomocą skrótu
*/
$ newuser ['hasło'] = Hash :: Make ($ newuser ['hasło']);
/** Włóż nowego użytkownika do tabeli
*/
$ user = user :: create ($ newuser);
/** Utwórz token dostępu dla użytkownika
*/
$ SUCCES ['token'] = $ user-> CreateToken ('appName')-> AccessToken;
/** Zwracaj komunikat sukcesu o wartości tokena
*/
Return Response ()-> JSON (['Success' => $ Success], 200);

B. Zaloguj sie:

Każdy użytkownik może zostać uwierzytelniony poprzez wdrożenie Login () metoda. Dodaj następujący kod w środku Apicontroller Aby zaimplementować interfejs API logowania. Wymagane pola do uwierzytelnienia użytkownika są pobierane z $ żądanie z Login () metoda. próba() Metoda sprawdzi wartości e-mail I hasło do uwierzytelnienia. Jeśli wartości pasują do wartości użytkownicy Tabela, wówczas rekord tego konkretnego użytkownika zostanie odzyskany, a wartość tokena zostanie zwrócona. Jeśli uwierzytelnianie się nie powiedzie, to Nieautoryzowany wiadomość zostanie zwrócona.

Logowanie do funkcji publicznych (żądanie $ żądanie)

/** Przeczytaj poświadczenia przekazane przez użytkownika
*/
$ poświadczenia = [
'e-mail' => $ request-> e-mail,
„hasło” => $ żądanie-> hasło
];
/** Sprawdź, czy poświadczenia są ważne lub nie
*/
if (auth ()-> próba ($ fasentials))
/** Przechowuj informacje uwierzytelnionego użytkownika
*/
$ user = auth :: user ();
/** Utwórz token dla uwierzytelnionego użytkownika
*/
$ SUCCES ['token'] = $ user-> CreateToken ('appName')-> AccessToken;
Return Response ()-> JSON (['Success' => $ Success], 200);
w przeciwnym razie
/** Zwracaj komunikat o błędzie
*/
return response ()-> json (['error' => 'nieautoryzowane'], 401);

C. Szczegóły użytkownika

Możesz uzyskać szczegółowe informacje każdego użytkownika po uwierzytelnianiu, wdrażając interfejs API użytkownika. Dodaj następujący kod do Apicontroller Aby pobrać szczegółowe informacje każdego uwierzytelnionego użytkownika.

funkcja publiczna user_info ()

/** Odzyskaj informacje uwierzytelnionego użytkownika
*/
$ user = auth :: user ();
/** Zwróć dane użytkownika
*/
Return Response ()-> JSON (['SUCCESS' => $ User], 200);

Trasa API dla kontrolera:

Otworzyć trasy \ App.php Złóż i zmodyfikuj zawartość za pomocą następujących kodów, aby zdefiniować trasę logowania, zarejestruj trasę i szczegółowo opisuje trasę usług API.

/** Trasa dla API logowania*/
Trasa :: „login”, „apicontroller@login”);
/** Trasa dla API rejestru*/
Trasa :: „rejestracja”, „apicontroller@rejestr”);
/** Trasa dla szczegółów API użytkownika*/
Trasa :: „Auth: API”)-> grupa (funkcja ()
Trasa :: „detale”, „apicontroller@user_info”);
);

Uruchom następujące polecenie, aby uruchomić serwer Laravel Development.

$ PHP Artisan Serve

Uwierzytelnianie API testu za pomocą listonosza:

Postman jest bardzo przydatnym narzędziem do testowania RESTful API. Żądanie HTTP można bardzo łatwo wygenerować do testowania funkcji API za pomocą interfejsu użytkownika tej aplikacji bez zapisywania dużej ilości kodu do wysyłania żądań. Postman może obsługiwać różne żądania HTTP i narzędzia do opracowania interfejsów API. Ma zarówno płatne, jak i bezpłatne wersje dla Linux.

Zainstaluj agent listonosze:

Uruchom następujące polecenie z terminala, aby zainstalować agenta listonowego na Ubuntu.

$ sudo snappon instaluj listonosz

Otwórz aplikację po instalacji. Po otwarciu nowego okna listonosza pojawi się następujący interfejs.

API rejestru testowego:

Kliknij na Utwórz żądanie link do otwarcia okna żądania. Laravel Development Server działa w porcie 8000 Domyślnie, który jest tutaj używany. Jeśli używasz innego portu, musisz zmodyfikować numer portu w adresie URL. Metoda post jest wybierana z rozwijanego i następujące adres URL do wysyłania żądania API dla API rejestru.

http: // localhost: 8000/API/rejestr

Trzy pola są zdefiniowane jako pola obowiązkowe dla użytkownicy Tabela, aby utworzyć nowego użytkownika. To są nazwa, e-mail, I hasło. Ustaw trzy klucze i wartości dla tych pól pokazanych poniżej i kliknij wysłać przycisk. rejestr() metoda Apicontroller zostanie wywołane zgodnie z trasą, jeśli żądanie zostanie wysłane prawidłowo.

Poniższa odpowiedź pojawi się, jeśli nowy rekord użytkownika zostanie pomyślnie włożony do użytkownicy tabela. Kod odpowiedzi, 200 wskazuje, że żądanie HTTP zakończyło się powodzeniem, a token jest generowany po włożeniu nowego użytkownika, który jest pokazany w ciele odpowiedzi w formacie JSON.

API logowania do testu:

Wybierz POST metoda jak Zarejestruj API To pokazano wcześniej. Ustaw następujący adres URL na pasku adresu, aby wysłać żądanie interfejsu API dla API logowania.

http: // localhost: 8000/API/login

Dwa pola są obowiązkowe do uwierzytelnienia dowolnego użytkownika na podstawie rekordów użytkownicy tabela. To są e-mail I hasło. Ustaw dwa klucze i wartości dla tych pól pokazanych poniżej i kliknij wysłać przycisk. Zaloguj sie() metoda Apicontroller zostanie wywołane zgodnie z trasą, jeśli żądanie zostanie wysłane prawidłowo.

Poniższa odpowiedź pojawi się, jeśli użytkownik zostanie pomyślnie uwierzytelniony na podstawie rekordów użytkownicy tabela. Kod odpowiedzi, 200 wskazuje, że żądanie HTTP zakończyło się powodzeniem. Wartość tokena jest generowana po uwierzytelnianiu użytkownika i zwraca organ odpowiedzi w formacie JSON.

Otrzymasz następujące ciało odpowiedzi, gdy zostaną zapewnione niewłaściwe poświadczenia do uwierzytelniania użytkownika. 401 Kod błędu jest wygenerowany tutaj, aby wskazać nieautoryzowany dostęp.

Testowanie szczegółów użytkownika API:

Do skonfigurowania są wymagane niektóre parametry nagłówka przed wysłaniem żądania API szczegółów. Kliknij na nagłówki Zakładka sekcji żądania i dodaj trzy wartości nagłówka, aby zidentyfikować uwierzytelnionego użytkownika. Wartość tokena jest kopiowana z ciała odpowiedzi i ustawiona dla wartości autoryzacji.

Zaakceptuj: aplikacja/JSON
Typ treści: aplikacja/JSON
Upoważnienie:
EYJ0EXAIOIJKV1QILCJHBGCIOIJSUZI1NIJ9.eyjhdwqioiixiiwianrpijoindu3owwnmewz
je3zwnmythhotkxndjkmmqwzdqxyzu4mgfimdm3otc4ntiwyza4ntjjztk2mwU4ngfKyje3OlU
wmzc3otiwmzk3owvmntKilcJpyxqioJe1otkynzk3mtysim5iZii6mtu5oti3otcxniwizxhwi
joxnjmwode1nze2lCjZdwiioii1iiWic2nvcgvzijpbxx0.FJYVZFSID4WKCLPZ2-
W64UVOOK1DQMO_KBLCI7C00XQKHUQUPVKGULUX3E2MJIOJ8ET0MLNGPUIFFS8AET7W8KOQCCL
SZMKUJOT4FHONQ5DYZMB4CSAIXFVOKK8YRM4GPCQ-B1OW5E9K5GCRLKMQNT9A6NYWOGHKXQQ4GE
qhnhfgpnokmfjbtgukij3amta2i7qhcbwdit5o970ldm1ehw-aumeszfljdjfn6zkhk4kc93-
VLPZBGEKH1XD0P1FJEWYMS590OIPERUWVS1HFCKPSNIFYROB04TYPHDL25QWBW0M0VATQG9FH
7xgijfskys-FGMMUC7lGLM8JUEVYMZFV-O5XVRLQ2EOCJLHSOFVKKUFZW-J3YFKAHBWY3OO4GRD4
fowv2tgvdnf1zr_b11bdfdgv3rrl8mznhx9dhjafquwedsnzbwouor9wy
VH0gi1fcikWowsm_bonatfittr9zqJKiWrqtks3KVQSNCF8NIKXLP2DGAXDD8MWYWOQ34NLYHHP
0U2try_bffe3y_icgqvlbhcmewdixJism8l9ctlodGrqa3Waqp11fv8CJFaip2mfz3uuvy6ndqar
Kv6ZRQ9OE4NCSQVVXEVP7RWOFAKPU7ECQNWVDOQ4HZ5J9TWX8BZ5EYBMGHVRXKQKHEIE2J6GZT0-RBURFM

Sekcja nagłówków części żądania będzie wyglądać jak następujący obraz. Musisz ustawić swoją wartość tokena generowaną w organu reakcji agenta listonowego.

Następnie kliknij Upoważnienie zakładka sekcji żądania i wybierz Nosiciel jako typ autoryzacji z Typ upuścić.

Teraz wybierz POST Metoda, ustaw następujący adres URL na pasku adresu. To zadzwoni Informacje użytkownika() metoda Apicontroller które odzyskają szczegółowe informacje uwierzytelnionego użytkownika.

http: // localhost: 8000/API/detale

Jeśli wartość tokena i informacje nagłówka zostaną poprawnie dostarczane, szczegóły tego użytkownika zostaną zwrócone jako ciało odpowiedzi w formacie JSON, jak następujący obraz.

Film instruktażowy

Wniosek:

Uwierzytelnianie paszportowe używa się teraz na wielu stronach Laravel, aby uzyskać przydatne funkcje. Sprawia, że ​​system uwierzytelniania LaraVel jest bardziej bezpieczny niż uwierzytelnianie domyślne i zapewnia inne usługi, które nie są dostępne w domyślnym uwierzytelnianiu. Podstawowe zastosowania paszportu Laravel z procesem instalacji i konfiguracji są poprawnie opisane w tym samouczku. Pokazane jest również użycie agenta listonowego, aby przetestować interfejs API. Mam nadzieję, że czytelnik zrozumie funkcjonalność pakietu paszportowego po przeczytaniu tego samouczka.