Heim >PHP-Framework >Laravel >So verwenden Sie JWT in Laravel

So verwenden Sie JWT in Laravel

王林
王林Original
2023-05-21 10:40:071989Durchsuche

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:

  1. Der Benutzer übermittelt seine Anmeldeinformationen (z. B. Benutzername und Passwort).
  2. Die Anwendung verwendet diese Anmeldeinformationen, um ein JWT zu generieren und es an den Benutzer zurückzugeben.
  3. Der Benutzer fügt dieses JWT in nachfolgenden Anfragen als Bearer-Token in den Autorisierungsheader ein.
  4. Die Anwendung extrahiert Benutzerinformationen aus dem JWT und überprüft deren Identität.

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:

  1. App Das Programm überprüft die Identität des Benutzers, bevor auf geschützte Ressourcen zugegriffen wird.
  2. Wenn der Benutzer authentifiziert wurde, prüft die Anwendung, ob das JWT die entsprechenden Rollen oder Berechtigungen enthält.
  3. Wenn der Benutzer über die entsprechende Rolle oder Berechtigungen verfügt, gewährt ihm die Anwendung Zugriff auf die angeforderte Ressource.

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!

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