Uwierzytelnianie API REST za pomocą laravel sanctum

Uwierzytelnianie API REST za pomocą laravel sanctum

Uwierzytelnianie jest główną częścią każdego projektu Laravel. W Laravel istnieje wiele pakietów w celu wdrożenia uwierzytelniania API REST, takich jak paszport, sanctum, jWT itp. Laravel Sanctum to prosty i lekki pakiet Laravel do wdrożenia systemu uwierzytelniania API REST dla aplikacji mobilnych, aplikacji jednostronicowych (SPA) i API opartych na tokenach. Może generować wiele tokenów API dla użytkowników, a aplikacja jednostronicowa może być uwierzytelniona za pomocą sesji użytkownika. Może być używany jako alternatywa dla interfejsu API paszportowego Laravel. Laravel Sanctum jest w wielu przypadkach lepszy niż paszport Laravel. Jest prostszy niż paszport Laravel i nie wymaga uwierzytelniania OAuth2, takiego jak uwierzytelnianie paszportowe. W tym samouczku pokazano sposoby wdrażania uwierzytelniania Laravel Sanctum i sprawdzania interfejsu API REST za pomocą Postmana.

Wymagania wstępne:

Musisz wykonać następujące zadania przed rozpoczęciem kroków wdrożenia systemu uwierzytelniania Laravel Sanctum.

Utwórz nowy projekt Laravel o nazwie sanctumproject. Tutaj kompozytor został użyty do stworzenia projektu Laravel. Jeśli kompozytor nie jest instalowany wcześniej, musisz go zainstalować przed wykonaniem następującego polecenia.

$ Composer Create-Project Laravel/Laravel SanctumProject

Przejdź do folderu projektu.

$ cd sanctumproject

Wszystkie przykłady tego samouczka zostały przetestowane w Laravel w wersji 9+. Sprawdź zainstalowaną wersję Laravela.

$ PHP Artisan --version

Uruchom następujące polecenia, aby zainstalować i uruchomić listonosz.

$ sudo snappon instaluj listonosz

Konfiguracja bazy danych:

Musisz utworzyć bazę danych w MySQL, aby zaimplementować zadanie uwierzytelniania. Wykonaj następujące zadania, aby utworzyć bazę danych i skonfiguruj bazę danych dla projektu Laravel.

  1. Uruchom następujące polecenie SQL, aby utworzyć nazwaną bazę danych L_SANCTUM Z monitu MySQL.
mysql> Utwórz bazę danych l_sanctum;
  1. Otworzyć .plik env projektu Laravel i zainicjuj wartości dla poniższych informacji na podstawie bazy danych.
Db_connection = mysql
Db_host = localhost
Db_port = 3306
Db_database = l_sanctum
Db_username = „nazwa użytkownika”
Db_password = „Hasło”

Zainstaluj i skonfiguruj Laravel Sanctum:

Musisz wykonać następujące zadania, aby zainstalować i skonfigurować laravel sanctum.

Uruchom następujące polecenie do pobierania niezbędnych plików w celu zainstalowania pakietu Laravel Sanctum.

$ Composer wymaga laravel/sanctum

Uruchom następujące polecenie, aby opublikować konfigurację sanctum.

$ PHP Artisan Vendor: Publish -provider = "laravel \ sanctum \ sanctumserviceprovider"

Następujące dane wyjściowe pojawią się po opublikowaniu Sanktuarium Pakiet pomyślnie.


Plik migracji dla użytkownicy Tabela jest tworzona domyślnie podczas tworzenia projektu Laravel. Uruchom następujące polecenie migracyjne, aby utworzyć użytkownicy Tabela używana do uwierzytelniania.

Migruj migruj Artisan $

Konfiguracja oprogramowania pośredniego:

Aby użyć sanctum, musisz dodać następujący wiersz w 'API„Część Jądro.php plik. Otworzyć Jądro.php Plik z lokalizacji, App/http/jądro.php, i dodaj linię.

\ Laravel \ sanctum \ http \ Middleware \ PRODEOFRONTendRequestSarestateful :: klasa,

''API„Sekcja tego pliku będzie wyglądać jak następujący obraz.

Utwórz API:

Przejdź do folderu projektu i uruchom następujące polecenie, aby utworzyć kontroler uwierzytelniania API. Authcontroller.Plik PHP zostanie utworzony w folderze App/HTTP/Controllers po wykonaniu polecenia.

$ PHP Artisan Make: kontroler autorytet

Otworzyć Authcontroller.php i zastąp treść następującym skryptem. Rejestr () funkcja został użyty w skrypcie do weryfikacji danych przesłanego użytkownika i włożenia prawidłowych danych do tabeli użytkowników. Funkcja login () została użyta w skrypcie do uwierzytelniania użytkownika poprzez sprawdzanie poświadczeń przesłanych do logowania.

przestrzeń nazw app \ http \ controllers;
Użyj Illuminate \ http \ żądanie;
Użyj Illuminate \ Support \ faceades \ Hash;
Użyj Illuminate \ Support \ faceades \ auth;
Użyj App \ Models \ User;
Klasa Authcontroller rozszerza kontroler

Rejestr funkcji publicznej (żądanie $ żądanie)
$ post_data = $ request-> sprawdzanie poprawności ([[
„Nazwa” => 'Wymagane | ciąg' ',
„e -mail” => 'wymagany | ciąg | e -mail | unikalny: użytkownicy' ',
„Hasło” => „Wymagane | min: 8”
]);
$ user = User :: Utwórz ([
„Nazwa” => $ post_data ['Nazwa'],
„e -mail” => $ post_data [„e -mail”],
„hasło” => hash :: Make ($ post_data ['hasło']),
]);
$ token = $ user-> CreateToken ('AuthToken')-> PlainTextToken;
Return Response ()-> JSON ([
„Access_Token” => $ token,
„token_type” => „nosiciel”,
]);

Logowanie funkcji publicznych (żądanie $ żądanie)
Jeśli (!\ Auth :: próba ($ request-> tylko („e-mail”, „hasło”))
Return Response ()-> JSON ([
„Wiadomość” => ”Informacje o logowaniu są nieprawidłowe.'
], 401);

$ user = User :: gdzie („e-mail”, $ request ['e-mail'])-> FIRSTORFAIL ();
$ token = $ user-> CreateToken ('AuthToken')-> PlainTextToken;
Return Response ()-> JSON ([
„Access_Token” => $ token,
„token_type” => „nosiciel”,
]);

Dodaj trasę dla API:

Otworzyć API.plik php z trasy folder i dodaj następujące wiersze. Pierwszy wiersz został wykorzystany do dodania informacji o authoncontroller. Druga linia została użyta do dodania trasy API do zarejestrowania użytkownika. Trzeci wiersz został użyty do dodania trasy API w celu uwierzytelnienia zarejestrowanego użytkownika.

Użyj App \ http \ Controllers \ Authcontroller;
Trasa :: „/rejestr”, [AuthController :: class, „rejestru”]);
Trasa :: „/login”, [AuthController :: class, „login”]);

Testowanie uwierzytelniania API za pomocą Postman:

Uruchom aplikację Postman. Ustaw typ żądania na POST i napisz następujący adres URL.

http: // 127.0.0.1: 8000/zarejestruj się

Po dodaniu wymaganych parametrów do zarejestrowania nowego konta użytkownika kliknij przycisk Wyślij. Jeśli nowe informacje o użytkowniku zostaną pomyślnie wstawiane do tabeli użytkowników, wówczas informacje o Access_Token będą wyświetlane jak następujący obraz.


Otworzyć Tabela użytkowników z bazy danych, logując się na serwerze MySQL lub otwierając PhpMyAdmin z przeglądarki, aby sprawdzić, czy każdy nowy rekord został włożony lub nie do Tabela użytkowników. Poniższy obraz pokazuje, że nowy rekord użytkownika został włożony do użytkownicy tabela po wysłaniu danych za pomocą listonosz aplikacja.


Teraz możesz sprawdzić uwierzytelnianie API za pomocą listonosza. Napisz następujący adres URL w aplikacji Postman po wybraniu postu jako typu żądania. Wpisz prawidłowy adres e -mail i hasło, aby uwierzytelnić istniejącego użytkownika i kliknij Wysłać przycisk. Jeśli podane informacje użytkownika są prawidłowe, Access_Token Informacje będą wyglądać jak następujący obraz. Komunikat o błędzie pojawi się dla nieprawidłowych informacji użytkownika.

Wniosek:

Prosty sposób wdrożenia uwierzytelniania API w projekcie Laravel za pomocą Sanktuarium Pakiet został pokazany w tym samouczku. Użytkownicy Laravel otrzymają pojęcie uwierzytelniania API i będą mogli wdrożyć i sprawdzić uwierzytelnianie za pomocą Postman po przeczytaniu tego samouczka.