Aktualisieren Sie das Tymon/jwt-auth-Token in der Laravel-API
P粉798010441
P粉798010441 2023-08-14 14:35:54
0
2
483

Ich habe eine Laravel-API und habe tymon/jwt-auth installiert. Um den Benutzer anzumelden und das Token zu erhalten, verwende ich den folgenden Code:

if (! $token = auth()->attempt($request->only('email', 'password'), true)) { throw ValidationException::withMessages([ 'email' => 'Ungültige Anmeldeinformationen', ]); } return new TokenResource([ 'token' => $token, 'user' => $user, ]); 

Ich habe auch einen Endpunkt für refresh token, der das alte Token ungültig machen und ein neues ausstellen soll. Laut Dokumentation habe ich folgenden Code hinzugefügt:

return new TokenResource([ 'token' => auth()->refresh(), 'user' => auth()->user(), ]); 

Das Problem besteht darin, dass, wenn ich mit dem aktuellen Token auf den Endpunkt zugreife, zwar ein neues Token zurückgegeben wird, das alte jedoch noch gültig ist.

Gibt es eine Möglichkeit, das Aktualisierungstoken ungültig zu machen?

P粉798010441
P粉798010441

Antworte allen (2)
P粉557957970

这是默认行为。所以为了实现你想要的结果,你可以将它们列入黑名单。当用户尝试使用一个令牌时,你可以检查它是否在黑名单中。如果是的话,你可以拒绝它。

你可以通过创建一个中间件来实现这一点,该中间件会检查令牌是否在黑名单中,并将该中间件应用于需要令牌验证的路由。

中间件:

public function handle($request, Closure $next) { $token = $request->bearerToken(); if (TokenBlacklist::where('token', $token)->exists()) { return response()->json(['message' => '令牌已失效'], 401); } return $next($request); }

然而,只有在你的系统实际需要时才应该这样做。

    P粉768045522

    在创建后,您无法手动使令牌过期。这就是令牌的工作原理。如果您创建了令牌,它将在过期之前有效,但您可以创建令牌的黑名单,每次刷新令牌时,将第一个令牌添加到黑名单中,还可以考虑降低令牌的生命周期(如果足够低),您可以依靠自动过期机制。

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!