Heim >PHP-Framework >Laravel >Laravel JWT löschen

Laravel JWT löschen

王林
王林Original
2023-05-29 09:31:36695Durchsuche

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:

  1. Sicherheitsprobleme: Kompromittierte oder kompromittierte JWTs können zu schwerwiegenden Sicherheitslücken führen.
  2. Missbrauchsprobleme: Wenn Ihre Anwendung Daten über Benutzeraktivitäten sammelt, müssen Sie möglicherweise das JWT entfernen, um die Datenerfassung zu stoppen, wenn sich der Benutzer abmeldet oder die Anwendung verlässt.
  3. Zum Debuggen: Das Entfernen des JWT kann Ihnen helfen, den Anmeldefluss des Benutzers neu zu simulieren.

Schritte zum Löschen von JWT

Um JWT zu löschen, gibt es die folgenden drei Schritte:

  1. JWT widerrufen: Ja Widerrufen Sie das JWT und machen Sie es dadurch ungültig. Um dies zu erreichen, müssen Sie eine Blacklist der gespeicherten JWTs führen.
  2. Ändern Sie die Gültigkeitsdauer von JWT: Sie können die Gültigkeitsdauer von JWT auf eine kürzere Zeit einstellen, um sicherzustellen, dass potenziell gestohlene JWTs schneller ablaufen.
  3. JWTs löschen: Sie können Benutzer bitten, JWTs manuell zu löschen oder sie durch Schreiben von Code zu löschen.

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,

Ändern Sie die Gültigkeitsdauer von JWT

JWT besteht aus drei Teilen, nämlich Header (Base64-codiertes JSON-Objekt), Payload (Base64-codiertes JSON-Objekt) und Signatur. Daher können Sie den Gültigkeitszeitraum im Ladevorgang ändern.

In Laravel/JWT können Sie den folgenden Code verwenden:

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);
}

Im obigen Code legen wir die Gültigkeitsdauer des JWT auf 24 Stunden fest.

JWT löschen

Wenn Benutzer das JWT manuell löschen müssen, müssen Sie dem Benutzer diese Informationen klar mitteilen. Sie können eine Schaltfläche oder einen Link für die Abmeldeaktion bereitstellen, damit der Benutzer das JWT löschen kann.

Wenn Sie das JWT durch Schreiben von Code löschen möchten, können Sie Ihrem Controller den folgenden Code hinzufügen:

public function logout(Request $request) {
    JWTAuth::invalidate(JWTAuth::getToken());
    return response()->json(['message' => 'Logout successful']);
}

Dieser Controller wird gelöscht, wenn der Benutzer auf die Schaltfläche „Abmelden“ klickt JWT.

Fazit

In diesem Artikel wird erklärt, wie man JWT in Laravel und JWT löscht. Sie können dies tun, indem Sie das JWT widerrufen, den Gültigkeitszeitraum ändern und das JWT löschen. Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte eine Nachricht im Kommentarbereich und ich werde so schnell wie möglich antworten.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn