Heim  >  Artikel  >  PHP-Framework  >  Lassen Sie uns über die Ursachen und Lösungen der Laravel-Token-Fehlermeldung sprechen

Lassen Sie uns über die Ursachen und Lösungen der Laravel-Token-Fehlermeldung sprechen

PHPz
PHPzOriginal
2023-04-06 16:44:151816Durchsuche

Mit der Entwicklung der Internettechnologie übernehmen immer mehr Websites eine Front-End- und Back-End-Trennarchitektur. In dieser Architektur kommunizieren Front- und Back-End über API-Schnittstellen. Bei der Verwendung des Laravel-Frameworks zur Entwicklung von API-Schnittstellen treten jedoch bei einigen Benutzern Token-Fehler auf. In diesem Artikel werden die Ursachen und Lösungen für dieses Problem vorgestellt.

Grund für den Token-Fehler

In Laravel ist es eine sehr verbreitete Methode, Token zur Überprüfung der Benutzeridentität in der API-Schnittstelle zu verwenden. Der im Laravel-Framework integrierte Authentifizierungsmechanismus umfasst Token-Vorgänge. Wenn er jedoch nicht richtig konfiguriert ist, führt dies zu Token-Fehlern.

Im Allgemeinen können Token-Fehler in den folgenden zwei Situationen auftreten:

  1. Token läuft ab

Token verwendet eine Technologie namens JWT (JSON Web Token), ein leichtgewichtiges Format, das auf einem Identitätsauthentifizierungsmechanismus auf JSON-Ebene basiert. Im Laravel-Framework beträgt die Token-Gültigkeitsdauer standardmäßig 1 Stunde. Wenn das Token nach Ablauf der Ablaufzeit verwendet wird, wird ein Token-Ablauffehler zurückgegeben.

  1. Token-Authentifizierung fehlgeschlagen

Wenn ein ungültiges Token verwendet oder kein Token bereitgestellt wird, wird der Fehler „Token-Authentifizierung fehlgeschlagen“ zurückgegeben.

Lösung

Als nächstes stellen wir verschiedene Methoden zur Behebung von Token-Fehlern vor.

  1. Verlängern Sie die Gültigkeitsdauer von Token

Die Verlängerung der Gültigkeitsdauer von Token ist eine relativ einfache Lösung. In Laravel muss die Änderung der Gültigkeitsdauer des Tokens in der Datei config/jwt.php konfiguriert werden. Öffnen Sie diese Datei und ändern Sie den Parameter TTN_TTL auf den erforderlichen Gültigkeitszeitraum.

  1. Wir stellen verwandte Klassenbibliotheken vor

In Laravel gibt es einige Klassenbibliotheken, die uns bei der Bewältigung von Token-bezogenen Problemen helfen können. Beispielsweise bieten Spatie/laravel-jwt, tymon/jwt-auth usw. sehr praktische Lösungen.

Im Folgenden erklären wir am Beispiel von spatie/laravel-jwt, wie die Methoden in der Klassenbibliothek zur Handhabung der Token-Fehlermeldung verwendet werden.

Führen Sie zunächst spatie/laravel-jwt in das Projekt ein:

composer require spatie/laravel-jwtcomposer require spatie/laravel-jwt

然后,发布配置文件:

php artisan vendor:publish --provider="SpatieJwtJwtServiceProvider"

接下来,在 AuthServiceProvider.php 文件中注册 JwtAuthGuard 对应的验证守卫:

public function boot()
{
    $this->registerPolicies();

    Auth::extend('jwt', function ($app, $name, array $config) {
        return new JwtAuthGuard($app[GuardHelper::class], $app['request']);
    });
}

最后,在 config/auth.php 文件中配置:

'guards' => [
    'api' => [
        'driver' => 'jwt',
        'provider' => 'users',
    ],
],

这样,就可以使用 Auth::guard('api')->user()

Dann veröffentlichen Sie die Konfigurationsdatei:
  1. php artisan seller:publish - - anbieter="SpatieJwtJwtServiceProvider"
Als nächstes registrieren Sie den Authentifizierungsschutz, der JwtAuthGuard entspricht, in der Datei AuthServiceProvider.php:

Middleware 1 - (如果存在)Middleware 2 - (如果存在)Middleware 3 - Controller
Konfigurieren Sie ihn abschließend in der Datei config/auth.php:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Factory as AuthFactory;

class TokenAuth
{
    protected $auth;

    public function __construct(AuthFactory $auth)
    {
        $this->auth = $auth;
    }

    public function handle($request, Closure $next)
    {
        try {
            $user = $this->auth->guard('api')->user();
        } catch (\Throwable $e) {
            return response()->json(['error' => 'Token 认证失败'], 401);
        }

        if (!$user) {
            return response()->json(['error' => 'Token 非法'], 401);
        }

        return $next($request);
    }
}
Auf diese Weise , Sie können Auth::guard('api')->user() verwenden. Ruft die Benutzerinformationen ab, die dem Token entsprechen.

Maßgeschneiderte Middleware

Schließlich können Sie das Problem der Token-Fehlerberichterstattung auch durch die Anpassung der Middleware lösen. Das Anpassen der Middleware in Laravel ist sehr einfach. Sie müssen sie nur über den Befehl „Artisan“ erstellen.

Bevor Sie mit der Erstellung von Middleware beginnen, gibt es eine Voraussetzung: Sie müssen den Ausführungsprozess der Laravel-Middleware verstehen. Einfach ausgedrückt ist der Ausführungsprozess der Laravel-Middleware wie folgt:

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});
Um es ganz klar auszudrücken: Es handelt sich um eine Stapelstruktur. Bevor Sie die Controller-Methode ausführen, können Sie eine benutzerdefinierte Token-Verifizierungslogik in die Middleware schreiben. Wenn die Token-Überprüfung fehlschlägt, geben Sie einfach direkt eine Fehlermeldung zurück.

Das Folgende ist ein Beispiel: 🎜rrreee🎜Verwenden Sie auf der Route des Controllers einfach die Middleware: 🎜rrreee🎜Auf diese Weise wird beim Zugriff auf die obige Route zuerst die benutzerdefinierte TokenAuth-Middleware ausgeführt, wenn die Token-Authentifizierung fehlschlägt , Es wird eine Fehlermeldung zurückgegeben. 🎜🎜Zusammenfassung🎜🎜Token-Fehlermeldungen sind ein relativ häufiges Problem, aber solange Sie die Ursache verstehen, können Sie geeignete Maßnahmen zur Lösung ergreifen. In diesem Artikel erfahren Sie, wie Sie die Gültigkeitsdauer von Token verlängern, verwandte Klassenbibliotheken einführen und Middleware anpassen, um das Problem der Token-Fehlerberichterstattung zu lösen. Diese Methoden sind relativ praktisch, und Entwickler können entsprechend ihrer tatsächlichen Situation die Methode auswählen, die zu ihnen passt. 🎜

Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Ursachen und Lösungen der Laravel-Token-Fehlermeldung sprechen. 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