Autenticazione API REST utilizzando Laravel Sanctum

Autenticazione API REST utilizzando Laravel Sanctum

L'autenticazione è una parte importante di qualsiasi progetto Laravel. Esistono molti pacchetti in Laravel per l'implementazione dell'autenticazione API REST, come passaporto, sanctum, jwt, ecc. Laravel Sanctum è un pacchetto Laravel semplice e leggero per implementare un sistema di autenticazione API REST per applicazioni mobili, applicazioni a pagina singola (SPA) e API a base di token. Può generare più token API per gli utenti e l'applicazione a pagina singola può essere autenticata utilizzando la sessione dell'utente. Può essere usato come alternativa all'API di passaporto Laravel. Laravel Sanctum è migliore del passaporto Laravel in molti casi. È più semplice del passaporto Laravel e non richiede l'autenticazione OAuth2 come l'autenticazione del passaporto. In questo tutorial sono stati mostrati i modi per implementare l'autenticazione di Laravel Sanctum e controllare l'API REX utilizzando Postman.

Prerequisiti:

È necessario completare le seguenti attività prima di iniziare i passaggi per l'implementazione del sistema di autenticazione di Laravel Sanctum.

Crea un nuovo progetto Laravel chiamato sanctumproject. Qui, il compositore è stato utilizzato per creare il progetto Laravel. Se la compositore non è installato prima di allora, è necessario installarlo prima di eseguire il seguente comando.

$ composir crea-project laravel/laravel sanctumproject

Vai alla cartella del progetto.

$ cd sanctumproject

Tutti gli esempi di questo tutorial sono stati testati nella versione 9+. Controlla la versione installata di Laravel.

$ php artisan -version

Eseguire i seguenti comandi per installare ed eseguire il postino.

$ sudo Snap Installa Postman

Setup Database:

Devi creare un database in MySQL per implementare l'attività di autenticazione. Completa le seguenti attività per creare un database e impostare il database per il progetto Laravel.

  1. Esegui il seguente comando SQL per creare un database chiamato l_sanctum dal prompt mysql.
mysql> crea database l_sanctum;
  1. Apri il .File Env del progetto Laravel e inizializza i valori per le seguenti informazioni in base al database.
Db_connection = mysql
Db_host = localhost
Db_port = 3306
Db_database = l_sanctum
Db_username = 'nome utente'
Db_password = 'password'

Installa e imposta Laravel Sanctum:

Devi fare le seguenti attività per installare e impostare il santuario di Laravel.

Esegui il comando seguente per il download di file necessari per installare il pacchetto Laravel Sanctum.

$ compositore richiede laravel/sanctum

Esegui il seguente comando per pubblicare la configurazione sanctum.

$ PHP Artisan Vendor: Publish -Provider = "Laravel \ Sanctum \ sancTumserviceProvider"

La seguente output apparirà dopo aver pubblicato il Sanctum pacchetto con successo.


Il file di migrazione per il file utenti La tabella viene creata per impostazione predefinita quando si crea il progetto Laravel. Eseguire il seguente comando migra per creare il utenti Tabella utilizzata per l'autenticazione.

$ PHP Artisan Migrate

Middleware di configurazione:

Per usare il santuario, devi aggiungere la seguente riga in "APIsezione del Kernel.PHP file. Apri il Kernel.PHP File dalla posizione, app/http/kernel.PHP, e aggiungi la linea.

\ Laravel \ sanctum \ http \ middleware \ assicurazionifrontendRequestSarestateful :: Class,

IL 'API'La sezione di questo file sarà assomigliata alla seguente immagine.

Crea l'API:

Vai alla cartella del progetto ed esegui il seguente comando per creare il controller per l'autenticazione API. AuthController.Il file PHP verrà creato all'interno della cartella APP/HTTP/Controller dopo l'esecuzione del comando.

$ PHP Artisan Make: Controller AuthController

Apri il AuthController.PHP e sostituire il contenuto con il seguente script. IL Funzione Register () è stato utilizzato nello script per convalidare i dati dell'utente inviato e inserire i dati validi nella tabella degli utenti. La funzione di accesso () è stata utilizzata nello script per autenticare l'utente controllando le credenziali inviate per l'accesso.

APPPACE NAME \ HTTP \ Controller;
Usa Illuminate \ http \ richiesta;
Usa Illuminate \ Support \ Facedes \ Hash;
Usa Illuminate \ Support \ Facedes \ Auth;
Usa App \ Models \ User;
Class AuthController estende il controller

Registro delle funzioni pubbliche (richiesta $ richiesta)
$ post_data = $ request-> Convalida ([
'name' => 'richiesto | stringa',
'email' => 'richiesto | stringa | email | univoco: utenti',
'password' => 'richiesto | min: 8'
]);
$ user = user :: create ([
'name' => $ post_data ['name'],
'email' => $ post_data ['email'],
'password' => hash :: make ($ post_data ['password']),
]);
$ token = $ user-> createTeken ('AuthToken')-> PlainTextToken;
return response ()-> json ([
'access_token' => $ token,
'token_type' => 'bears',
]);

Accesso della funzione pubblica (richiesta $ richiesta)
Se (!\ Auth :: tentativo ($ request-> solo ('email', 'password'))
return response ()-> json ([
'Messaggio' => 'Le informazioni di accesso non sono valide.'
], 401);

$ user = user :: where ('email', $ request ['email'])-> firstorfail ();
$ token = $ user-> createTeken ('AuthToken')-> PlainTextToken;
return response ()-> json ([
'access_token' => $ token,
'token_type' => 'bears',
]);

Aggiungi il percorso per l'API:

Apri il API.File PHP dal itinerari cartella e aggiungere le seguenti righe. La prima riga è stata utilizzata per aggiungere le informazioni di AuthController. La seconda riga è stata utilizzata per aggiungere il percorso API per registrare l'utente. La terza riga è stata utilizzata per aggiungere il percorso API per autenticare l'utente registrato.

Utilizzare l'app \ http \ controller \ authcontroller;
Route :: post ('/register', [authcontroller :: class, 'register']);
Route :: post ('/login', [authcontroller :: class, 'login']);

Autenticazione API di prova utilizzando il postman:

Esegui l'applicazione Postman. Imposta il tipo di richiesta su INVIARE e scrivi il seguente URL.

http: // 127.0.0.1: 8000/Registra

Dopo aver aggiunto i parametri richiesti per registrare un nuovo account utente, fare clic sul pulsante Invia. Se le nuove informazioni dell'utente vengono inserite correttamente nella tabella degli utenti, verranno visualizzate le informazioni Access_Token come la seguente immagine.


Apri il Tabella degli utenti dal database accedendo al server MySQL o aprono il Phpmyadmin dal browser per controllare qualsiasi nuovo record è stato inserito o meno nel Tabella degli utenti. La seguente immagine mostra che un nuovo record utente è stato inserito nel utenti tabella dopo aver inviato i dati utilizzando il postino applicazione.


Ora puoi controllare l'autenticazione API utilizzando il postman. Scrivi il seguente URL nell'applicazione Postman dopo aver selezionato il post come tipo di richiesta. Digita l'indirizzo e -mail e la password validi per autenticare l'utente esistente e fare clic su Inviare pulsante. Se le informazioni dell'utente fornite sono valide, il token di accesso Le informazioni appariranno come la seguente immagine. Il messaggio di errore verrà visualizzato per le informazioni dell'utente non valido.

Conclusione:

Il modo semplice di implementare l'autenticazione API nel progetto Laravel utilizzando il Sanctum Il pacchetto è stato mostrato in questo tutorial. Gli utenti di Laravel otterranno il concetto di autenticazione API e saranno in grado di implementare e controllare l'autenticazione usando Postman dopo aver letto questo tutorial.