Mit der kontinuierlichen Entwicklung von APIs müssen immer mehr Webanwendungen JSON Web Tokens (JWT) verwenden, um Benutzerauthentifizierung und -autorisierung zu implementieren. Als bevorzugtes Framework für die Entwicklung von APIs unterstützt Laravel auch JWT. In diesem Artikel wird die Verwendung von JWT in Laravel vorgestellt.
Was ist JWT?
JSON Web Token (JWT) ist ein offener Standard (RFC 7519) zur sicheren Übertragung von Ansprüchen als JSON-Objekte zwischen Parteien. JWT kann zur Autorisierung, Authentifizierung und zum Informationsaustausch verwendet werden. JWT wird normalerweise als Bearer-Token im Authorization-Header der HTTP-Anfrage übertragen.
Die Struktur von JWT besteht aus drei Teilen: Header, Payload und Signatur. Der Header und die Nutzlast sind beide JSON-Objekte und die Signatur ist das verschlüsselte Ergebnis der Kombination dieser beiden Teile. Da die Struktur von JWT sehr einfach ist, kann sie leicht analysiert und überprüft werden.
Wie verwende ich JWT in Laravel?
Die Verwendung von JWT erfordert die Installation der folgenden abhängigen Bibliotheken im Laravel-Projekt: tymondesigns/jwt-auth. In Laravel 5.7 und höher können Sie den folgenden Befehl verwenden, um diese abhängige Bibliothek zu installieren:
composer require tymon/jwt-auth
Nach Abschluss der Installation müssen Sie den folgenden Dienstanbieter und Alias in der Datei config/app.php hinzufügen:
'providers' => [ // Other Service Providers TymonJWTAuthProvidersLaravelServiceProvider::class, ], 'aliases' => [ // Other Aliases 'JWTAuth' => TymonJWTAuthFacadesJWTAuth::class, 'JWTFactory' => TymonJWTAuthFacadesJWTFactory::class, ],
Next , müssen Sie den Schlüssel des JWT generieren. Der Schlüssel kann mit dem folgenden Befehl generiert werden:
php artisan jwt:secret
Dieser Befehl generiert einen zufälligen Schlüssel und fügt ihn der Datei config/jwt.php hinzu. Es ist wichtig, diesen Schlüssel zu schützen und ihn niemandem preiszugeben.
Nachdem Sie den Schlüssel generiert haben, können Sie JWT in Laravel verwenden. JWT kann zur Authentifizierung und Autorisierung verwendet werden.
Authentifizierung mit JWT
Der Prozess zur Authentifizierung mit JWT in Laravel ist wie folgt:
Der Code zum Generieren des JWT und Zurückgeben an den Benutzer lautet wie folgt:
public function login(Request $request) { $credentials = $request->only('email', 'password'); if (!$token = JWTAuth::attempt($credentials)) { return response()->json(['error' => 'Unauthorized'], 401); } return response()->json(['token' => $token]); }
Der Code zum Überprüfen des JWT und Extrahieren der Benutzerinformationen lautet wie folgt:
public function profile(Request $request) { $user = JWTAuth::parseToken()->authenticate(); return response()->json(['user' => $user]); }
JWT zur Autorisierung verwenden
Der Prozess der Verwendung Das JWT für die Autorisierung in Laravel lautet wie folgt:
Der Code zum Überprüfen des JWT und zum Überprüfen der Rolle oder Berechtigungen des Benutzers lautet wie folgt:
public function index(Request $request) { $user = JWTAuth::parseToken()->authenticate(); if ($user->hasRole('admin')) { $items = Item::all(); } else { $items = Item::where('user_id', '=', $user->id)->get(); } return response()->json(['items' => $items]); }
Es ist zu beachten, dass die Methode hasRole() hier eine benutzerdefinierte Methode ist und im Benutzermodell implementiert werden muss.
Zusammenfassung
Dieser Artikel stellt den Prozess der Verwendung von JWT zur Authentifizierung und Autorisierung in Laravel vor. JWT bietet einen sicheren, einfachen und skalierbaren Benutzerauthentifizierungsmechanismus, der Anwendungen vor einer Vielzahl von Angriffen schützt. Wenn Sie eine Webanwendung entwickeln, die eine API erfordert, ist die Verwendung von JWT eine gute Wahl.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie JWT in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!