Tutorial del passaporto Laravel

Tutorial del passaporto Laravel
Multiple funzionalità di autenticazione sono implementate nella versione 5.2. Sono necessari diversi sistemi di autenticazione per implementare percorsi diversi che richiedono tempo e inefficienti. Lo stesso sistema di autenticazione può essere utilizzato per ragnatela E API Utilizzando una funzione di autenticazione basata su token. Ma questo sistema di autenticazione non è più sicuro per l'applicazione. Ora, il sistema di autenticazione dell'applicazione Laravel può essere protetto utilizzando il nuovo Passaporto Funzione di autenticazione di Laravel. Utilizza due Env che sono i segreti dell'API di passaporto Laravel. Questi sono Api_Client_id e Api_Client_Secret. Un token di accesso genera per ciascun utente quando viene utilizzato il passaporto Laravel e consente all'utente di accedere ad alcuni endpoint sicuri. Come è possibile creare un sistema di autenticazione API sicuro utilizzando il passaporto Laravel e l'accesso ai contenuti autorizzati sono mostrati in questo tutorial.

Vantaggi dell'utilizzo del passaporto Laravel:

Il protocollo OAuth2 può essere integrato con l'applicazione Laravel utilizzando la password Laravel. Quando l'utente desidera recuperare o inserire i dati dall'applicazione, la richiesta di accesso verrà inviata da questo protocollo. L'autorizzazione verrà fornita all'utente autorizzando l'utente per l'accesso. Di seguito sono menzionati alcuni importanti vantaggi dell'autenticazione del passaporto.

  • L'autenticazione del passaporto è migliore dell'autenticazione predefinita di Laravel perché può essere utilizzata anche per il sito esterno.
  • L'autenticazione API normale può essere utilizzata per accedere al contenuto del sito Laravel solo dove viene implementato. Ma il sito esterno può accedere al contenuto del sito Laravel con l'autorizzazione dell'utente e del token autenticato.

Prerequisiti:

È necessario eseguire la seguente attività prima di installare e utilizzare il passaporto Laravel per l'autenticazione dell'utente.

  • Installa un nuovo progetto Laravel
  • Connessione del database di configurazione

Installa il passaporto Laravel:

Eseguire il comando seguente dal terminale per installare il pacchetto di passaporto Laravel utilizzando il compositore.

$ compositore richiede laravel/passaporto

Dovrai creare il utenti Tabella nel database prima di installare il pacchetto passaporto. Tre file di migrazione e a Utente Il modello è stato generato automaticamente quando crea un nuovo progetto Laravel. Uno di questi è usato per creare un utenti tavolo. Vai alla cartella del progetto Laravel ed esegui il seguente comando migra per creare il utenti tavolo.

$ PHP Artisan Migrate

Esegui il comando seguente per installare il pacchetto passaporto per il progetto.

$ PHP Artisan Passport: Installa

Otterrai le seguenti informazioni dopo aver installato il passaporto Laravel correttamente nel tuo progetto. Qui vengono generate due chiavi segrete. Uno per Cliente di accesso personale e un altro per Cliente di concessione della password.

Configurazione del passaporto di Laravel:

Apri il Utente Modello che si trova nella posizione, App \ modello.PHP da un editore e modifica il modello come sotto. Aggiungere Laravel \ Passport \ Hasapitokens All'inizio della classe e usa HasaPitokens e notificabile all'interno della classe.

app spazio dei nomi;
Usa Illuminate \ contratti \ auth \ MustVerifyEmail;
Utilizzare Illuminate \ Foundation \ Auth \ utente come autenticabile;
Usa illuminare \ notifiche \ Notificable;
// aggiunto qui
Usa Laravel \ Passport \ Hasapitokens;
L'utente di classe si estende autenticabile

// modificato qui
Usa Hasapitokens, Notificable;
/**
* Gli attributi che sono assegnabili in massa.
*
* Array @var
*/
Protected $ riempibile = [
'name', 'email', 'password',
];
/**
* Gli attributi che dovrebbero essere nascosti per gli array.
*
* Array @var
*/
protetto $ nascosto = [
'password', 'ricorda_token',
];
/**
* Gli attributi che dovrebbero essere lanciati a tipi nativi.
*
* Array @var
*/
Protected $ Casts = [
'email_verified_at' => 'datetime',
];

Successivamente, aperto App/Provider/AuthserviceProvider.PHP per registrare i percorsi necessari per emettere e revocare i token di accesso. Passaporto :: Il metodo dei percorsi viene chiamato all'interno del metodo di avvio AuthserviceProvider. Modifica il contenuto del file mostrato di seguito.

APPS SPACE NAME \ Provider;
Utilizzare Illuminate \ Foundation \ Support \ Provider \ AuthserviceProvider come ServiceProvider;
Usa Illuminate \ Support \ Facedes \ Gate;
// Il passaporto viene aggiunto qui
Usa Laravel \ Passport \ Passport;
Classe AutherviceProvider estende ServiceProvider

/** le mappature della politica per l'applicazione.
*
* Array @var
*/
politiche $ protette = [
'App \ modello' => 'app \ politiche \ modelpolicy',
];
/**
* Registra eventuali servizi di autenticazione / autorizzazione.
*
* @return void
*/
Boot della funzione pubblica ()

$ this-> registerpolicies ();
Passaporto :: route ();
Passaporto :: tokensexpirein (ora ()-> adddays (15));
Passport :: RefreetToKenseXXpireIn (ora ()-> AddDays (30));

Successivamente, aperto config \ app.PHP e inserire la seguente riga in fornitori Array per includere la classe necessaria per l'utilizzo del passaporto Laravel.

Laravel \ Passport \ PassportServiceProvider :: Class,

Successivamente, aperto Config \ Auth.PHP e imposta il driver di API su passaporto nel guardie ✔ Array mostrato di seguito.

'guardie' => [
'web' => [
sessione 'driver' => ',
'Provider' => 'utenti',
",
'api' => [
'Driver' => 'passaporto',
'Provider' => 'utenti',
'hash' => false,
",
",

Implementare il controller per la registrazione e l'autenticazione:

È necessario creare un controller per l'implementazione del sistema di autenticazione utilizzando il pacchetto Passport. Esegui il seguente comando dalla cartella root del progetto per creare Apicontroller.

$ PHP Artisan Make: Controller Apicontroller

Nella parte successiva di questo tutorial, vengono aggiunti tre metodi all'interno del Apicontroller Per creare un nuovo utente, autenticare un utente e ottenere le informazioni dettagliate di un utente autenticato.

UN. Registrati

Un nuovo utente può essere creato in utenti tabella implementando a Registrati() metodo. Aggiungi il seguente codice all'interno del Apicontroller Per implementare l'API di registro. I valori di campo necessari per la creazione di un nuovo utente vengono recuperati dall'argomento, $ richiesta del metodo Registrati(). Validatore La classe viene utilizzata per verificare che i valori del campo sono validi o meno in base alle regole di convalida definita. Se la non riesce() Il metodo restituisce vero, quindi restituirà un messaggio di errore in formato JSON. Se la non riesce() Il metodo restituisce falso, quindi una password hash genererà e verranno inserite nuove informazioni sull'utente nella tabella degli utenti. Verrà generato un token dopo aver creato il nuovo utente e verrà restituito un messaggio di successo con valore token.

Registro delle funzioni pubbliche (richiesta $ richiesta)

/** Convalida i dati utilizzando le regole di convalida
*/
$ validatore = validatore :: make ($ request-> all (), [
'name' => 'richiesto',
'email' => 'richiesto | email',
'password' => 'richiesto',
]);
/** Controllare che la convalida diventa fallisce o no
*/
if ($ validatore-> fails ())
/** Messaggio di errore di ritorno
*/
return response ()-> json (['errore' => $ validatore-> errori ()]);

/** Memorizza tutti i valori dei campi
*/
$ newUser = $ request-> all ();
/** Crea una password crittografata utilizzando l'hash
*/
$ newUser ['password'] = hash :: make ($ newuser ['password']);
/** Inserire un nuovo utente nella tabella
*/
$ user = user :: create ($ newuser);
/** Crea un token di accesso per l'utente
*/
$ successo ['token'] = $ user-> createTeken ('appname')-> accessToken;
/** Restituisci il messaggio di successo con valore token
*/
return response ()-> json (['successo' => $ successo], 200);

B. Login:

Qualsiasi utente può essere autenticato implementando login () metodo. Aggiungi il seguente codice all'interno Apicontroller Per implementare un'API di accesso. I campi richiesti per autenticare un utente vengono recuperati da $ richiesta Di login () metodo. tentativo() Il metodo controllerà i valori di e-mail E parola d'ordine per l'autenticazione. Se i valori corrispondono ai valori del utenti Tabella quindi verrà recuperato il record di quel particolare utente e verrà restituito un valore token. Se l'autenticazione fallisce, un Non autorizzato il messaggio verrà restituito.

Accesso della funzione pubblica (richiesta $ richiesta)

/** Leggi le credenziali approvate dall'utente
*/
$ credenziali = [
'email' => $ request-> email,
'password' => $ request-> password
];
/** Controllare che le credenziali siano valide o no
*/
if (auth ()-> tentativo ($ credenziali))
/** memorizza le informazioni dell'utente autenticato
*/
$ user = auth :: user ();
/** Crea token per l'utente autenticato
*/
$ successo ['token'] = $ user-> createTeken ('appname')-> accessToken;
return response ()-> json (['successo' => $ successo], 200);
altro
/** Messaggio di errore di ritorno
*/
return response ()-> json (['errore' => 'non autorizzato'], 401);

C. Dettaglio dell'utente

È possibile ottenere le informazioni dettagliate di qualsiasi utente dopo l'autenticazione implementando l'API dell'utente. Aggiungi il seguente codice in Apicontroller Per recuperare le informazioni dettagliate di qualsiasi utente autenticato.

funzione pubblica user_info ()

/** Recupera le informazioni dell'utente autenticato
*/
$ user = auth :: user ();
/** Restituisci i dettagli dell'utente
*/
return response ()-> json (['successo' => $ user], 200);

Percorso API per il controller:

Apri il rotte \ app.PHP File e modifica il contenuto con i seguenti codici per definire il percorso di accesso, il percorso di registrazione e i dettagli per i servizi API.

/** Route per API di accesso*/
Route :: post ('login', 'apicontroller@login');
/** Route per API Register*/
Route :: post ('Register', 'apicontroller@register');
/** Percorso per dettagli API utente*/
Route :: Middleware ('Auth: API')-> Group (function ()
Route :: post ('Dettagli', 'apicontroller@user_info');
);

Esegui il seguente comando per avviare il server di sviluppo di Laravel.

$ PHP Artisan Serve

Autenticazione API Test utilizzando Postman:

Postman è uno strumento molto utile per testare le API RESTful. La richiesta HTTP può essere generata molto facilmente per testare le funzionalità API utilizzando l'interfaccia utente di questa applicazione senza scrivere una grande quantità di codice per inviare richieste. Postman è in grado di gestire varie richieste e utility HTTP per sviluppare API. Ha versioni sia pagate che gratuite per Linux.

Installa l'agente postman:

Esegui il seguente comando dal terminale per installare un agente di postino su Ubuntu.

$ sudo Snap Installa Postman

Apri l'applicazione dopo l'installazione. La seguente interfaccia apparirà dopo aver aperto la nuova finestra del postman.

API del registro di prova:

Clicca sul Crea una richiesta Collegamento per aprire la finestra Richiesta. Il server di sviluppo di Laravel funziona alla porta 8000 Per impostazione predefinita che viene utilizzata qui. Se si utilizza una porta diversa, è necessario modificare il numero di porta nel tuo URL. Il metodo post viene selezionato dal menu a discesa e il seguente URL viene utilizzato per inviare una richiesta API per l'API di registro.

http: // localhost: 8000/api/register

Tre campi sono definiti come campi obbligatori per il utenti Tabella per creare un nuovo utente. Questi sono nome, e-mail, E parola d'ordine. Imposta tre chiavi e valori per questi campi mostrati di seguito e fai clic su Inviare pulsante. IL Registrati() metodo di Apicontroller verrà chiamato secondo il percorso se la richiesta viene inviata correttamente.

La seguente risposta apparirà se il nuovo record utente viene inserito correttamente nel utenti tavolo. Il codice di risposta, 200 indica che la richiesta HTTP ha avuto successo e un token viene generato dopo aver inserito il nuovo utente che viene mostrato nel corpo di risposta in formato JSON.

API di login di prova:

Seleziona il INVIARE metodo come il Registra API questo è mostrato prima. Imposta il seguente URL nella barra degli indirizzi per inviare una richiesta API per API di accesso.

http: // localhost: 8000/api/login

Due campi sono obbligatori per autenticare qualsiasi utente in base ai record del utenti tavolo. Questi sono e-mail E parola d'ordine. Imposta due chiavi e valori per questi campi mostrati di seguito e fai clic su Inviare pulsante. IL login() metodo di Apicontroller verrà chiamato secondo il percorso se la richiesta viene inviata correttamente.

La seguente risposta apparirà se l'utente viene autenticato correttamente in base ai record del utenti tavolo. Il codice di risposta, 200 indica che la richiesta HTTP ha avuto successo. Il valore token viene generato dopo aver autenticato l'utente e restituisce il corpo di risposta in formato JSON.

Otterrai il seguente organo di risposta quando vengono fornite le credenziali sbagliate per l'autenticazione dell'utente. 401 Il codice di errore viene generato qui per indicare l'accesso non autorizzato.

Test API Dettagli utente:

Alcuni parametri di intestazione sono necessari per impostare prima di inviare la richiesta di dettagli API. Clicca sul testate Scheda della sezione Richiesta e aggiungere tre valori di intestazione per identificare l'utente autenticato. Il valore token viene copiato dall'organismo di risposta e impostato per il valore di autorizzazione.

Accetta: applicazione/json
Content-Type: Application/JSON
Autorizzazione:
eyj0exaioijkv1qilcjhbgcioijsuzi1nij9.eyjhdwqioiixiiiwianrpijoindu3owuwnmewz
JE3ZWNMYTHHHOTKXNDJKMMQWZDQXYZU4MGFIMDM3OTC4TTIWYZA4NTJJZTK2MWU4NGFKYJE3ODU
wmzc3otiwmzk3owvmntkilcjpyxqioje1otkynzk3mtysim5iZii6mtu5oti3otcxniwizxhwi
joxnjmwode1nze2lcjzdwiioii1iiwic2nvcgvzijpbxx0.FJYVZFSID4WKCKLPZ2-
w64uvook1dqmo_kblci7c00xqkhuqupvkgrulux3e2mjioj8et0mlngpuiffs8aet7w8koqccl
Szmkujot4fhonq5dyzmb4csaixfvokk8yrm4gpcq-b1ow5e9k5gcrlkmqnt9a6nywoghkxqq4ge
QHNHFGPNOKMFJBTGUKIJ3AMTA2I7QHCBWDIT5O970LDM1EHW-AUMESZFLJDJFN6ZKHK4KC93-
VLPZBGEKH1XD0P1FJEWYMS590OIPERUWVS1HFCKPSNIFYROB04TYTYPHDL25QWBW0M0VATQG9FH
7xgijfskys-fgmmuc7lglm8juevymzfv-o5xvrlq2eocjlhsofvkkufzw-j3yfkahbwy3oo4grd4
fowv2tgvdnf1zr_b11bdfdgv3rrl8mznhx9dhjafqubwedsnzbwouor9wy
VH0GI1FCIKWOWSM_BONATTTTR9ZQJKIWRQTKS3KVQSNCF8NIKXLP2DGAXDD8MWYWOQ34NLYHP
0U2try_bffe3y_icgqvlbhcmewdixjism8l9ctlodgrqa3waqp11fv8cjfaip2mfz3uuvy6ndqar
KV6ZRQ9OE4NCSQVVXEVP7RWOFAKPU7ACQNWVDOQ4HZ5J9TWX8BZ5EYBMGHVRXKQKHEIE2J6GZT0-RBURFM

La sezione di intestazioni della parte di richiesta sarà assomigliata alla seguente immagine. Devi impostare il tuo valore token generato nel corpo di risposta del tuo agente di postino.

Quindi, fare clic su Autorizzazione Scheda della sezione Richiesta e selezionare Token portatore come tipo di autorizzazione dal file Tipo cadere in picchiata.

Ora seleziona il INVIARE Metodo, impostare il seguente URL nella barra degli indirizzi. Chiamerà il user_info () metodo di Apicontroller che recupererà le informazioni dettagliate dell'utente autenticato.

http: // localhost: 8000/API/Dettagli

Se il valore del token e le informazioni di intestazione vengono fornite correttamente, i dettagli di quell'utente verranno restituiti come un corpo di risposta in formato JSON come la seguente immagine.

Tutorial video

Conclusione:

L'autenticazione del passaporto utilizza ora in molti siti Web di Laravel per le sue funzionalità utili. Rende il sistema di autenticazione Laravel più sicuro dell'autenticazione predefinita e fornisce altri servizi che non sono disponibili nell'autenticazione predefinita. Gli usi di base del passaporto Laravel con il processo di installazione e configurazione sono descritti correttamente in questo tutorial. L'uso dell'agente postman è anche mostrato qui per testare l'API. Spero che il lettore capisca le funzionalità del pacchetto passaporto dopo aver letto questo tutorial.