Vorwort
Bei der Verwendung von Laravel und JWT für die Webentwicklung kann es vorkommen, dass JWT im Laravel-Framework gelöscht wird.
Notwendigkeit, JWT zu löschen
JWT ist eine großartige Lösung für Benutzerauthentifizierungs- und Autorisierungsprobleme, aber in einigen Fällen müssen Sie JWT möglicherweise löschen. Hier sind einige Gründe dafür:
Schritte zum Löschen von JWT
Um JWT zu löschen, gibt es die folgenden drei Schritte:
Wir erklären Ihnen diese Schritte genauer.
JWT widerrufen
Für den JWT-Widerruf müssen Sie eine JWT-Blacklist führen. Wenn sich ein Benutzer abmeldet oder die Anwendung verlässt, fügen Sie das JWT des Benutzers zur Blacklist hinzu. Wenn ein Benutzer versucht, über dieses JWT auf Ihre Anwendung zuzugreifen, prüft Ihre Anwendung, ob das JWT auf der Blacklist steht. Wenn dies der Fall ist, darf der Benutzer Ihre Anwendung nicht betreten. Hier sind die Schritte, um dies zu erreichen:
Schritt 1: Erstellen Sie eine Middleware.
Erstellen Sie eine Middleware mit dem Namen „JwtBlacklist“.
php artisan make:middleware JwtBlacklist
Schritt 2: Schreiben Sie den Code
Schreiben Sie den folgenden Code in die Handle-Methode der Middleware:
public function handle($request, Closure $next) { $token = $request->bearerToken(); if(auth()->check()){ auth()->logout(); JWTAuth::invalidate(JWTAuth::getToken()); return response()->json(['message' => 'Logout successful']); }elseif($token){ try { JWTAuth::parseToken()->authenticate(); JWTAuth::invalidate(JWTAuth::getToken()); return response()->json(['message' => 'Logout successful']); } catch (JWTException $e) { // ignore errors } } return $next($request); }
Schritt 3: Registrieren Sie die Middleware #🎜 🎜#
Registrieren Sie die Middleware im $routeMiddleware-Array der Datei app/Http/Kernel.php.'jwt.blacklist' => AppHttpMiddlewareJwtBlacklist::class,
public function login(Request $request) { $credentials = $request->only('email', 'password'); if ($token = JWTAuth::attempt($credentials, ['exp' => Carbon::now()->addHours(24)->timestamp])) { return response()->json(['message' => 'Success', 'token' => $token]); } return response()->json(['error' => 'Unauthorized'], 401); }
public function logout(Request $request) { JWTAuth::invalidate(JWTAuth::getToken()); return response()->json(['message' => 'Logout successful']); }
Das obige ist der detaillierte Inhalt vonLaravel JWT löschen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!