In diesem Artikel werde ich die API-Token-Authentifizierung anhand von Diagrammen leicht verständlich erklären.
Nachdem ich grob verstanden habe, wie die API-Token-Authentifizierung funktioniert, werde ich erklären, wie die API-Token-Authentifizierung mit Laravel Sanctum auf codebasierte Weise funktioniert.
Durch die Lektüre dieses Artikels erfahren Sie Folgendes
Der Client sendet die Anmeldeinformationen des Benutzers (z. B. E-Mail, Passwort) an den Auth-Server.
Der Authentifizierungsserver überprüft die Anmeldeinformationen, um zu prüfen, ob der Benutzer existiert und ob das Passwort korrekt ist.
Nach erfolgreicher Anmeldung generiert der Auth-Server ein API-Token für den Benutzer. Das generierte API-Token wird in der Tabelle personal_access_tokens gespeichert.
Der Client sendet eine API-Anfrage an den Ressourcenserver und hängt das generierte API-Token an den Autorisierungsheader an.
Ressourcenserver überprüft API-Token. Wenn das API-Token gültig ist, wird die Anfrage verarbeitet.
Ressourcenserver gibt API-Antwort zurück.
sail php artisan install:api
Dieser Befehl generiert die Datei api.php und die Migrationsdateien, die für die API-Token-Authentifizierung im Rahmen des Laravel-Projekts erforderlich sind.
Führen Sie dann die Migration aus:
sail artisan migrate
Dadurch wird die Tabelle personal_access_tokens erstellt.
2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
api.php
Route::post('/register', [AuthController::class, 'register']);
AuthController.php
public function register(Request $request) { $fields = $request->validate([ 'name' => 'required|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|confirmed' ]); $user = User::create($fields); $token = $user->createToken($request->name); return [ 'user' => $user, 'token' => $token->plainTextToken ]; }
api.php
*Route*::post('/login', [*AuthController*::class, 'login']);
AuthController.php
sail php artisan install:api
*Hinweis: Jedes Mal, wenn sich ein Benutzer anmeldet, wird ein neues API-Token generiert.
Senden Sie mit Postman eine API-Anfrage mit den folgenden Bedingungen, um die Antwort zu überprüfen.
Bei erfolgreicher Anmeldung wird ein API-Token generiert.
Sie können die Tabelle personal_access_tokens überprüfen, um zu bestätigen, dass der Name und das API-Token des angemeldeten Benutzers gespeichert sind.
*Hinweis: Das Token in der API-Antwort unterscheidet sich vom Token in der Tabelle personal_access_tokens, da es beim Speichern in der Datenbank gehasht wird.
Das Folgende ist der Beispielcode des CRUD-Prozesses für Beiträge, die einem Benutzer zugeordnet sind.
Beispielcode: PostController.php
Beschränken Sie mit Laravel Sanctum den Zugriff, sodass nur angemeldete Benutzer Beiträge erstellen, bearbeiten und löschen können, die einem Benutzer zugeordnet sind.
Senden Sie eine tatsächliche API-Anfrage, um zu überprüfen, ob die API-Token-Authentifizierung korrekt durchgeführt wird.
Es ist auch möglich, den Zugriff auf alle Endpunkte der in apiResource festgelegten Beiträge einzuschränken, indem Sie Folgendes in die Routing-Datei schreiben.
api.php
sail php artisan install:api
sail artisan migrate
In diesem Fall möchten wir die API-Token-Authentifizierung nur für die Speicher-, Aktualisierungs- und Löschaktionen im PostController festlegen. Erstellen Sie dazu eine Konstruktormethode in PostController und wenden Sie die Middleware auth:sanctum auf alle Aktionen außer index und show an.
PostController.php
2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Jetzt müssen Benutzer das Token in die Anfrage aufnehmen, wenn sie einen Beitrag erstellen, aktualisieren oder löschen.
Beim Testen dieses Setups: Wenn Sie eine Anfrage ohne das Autorisierungstoken zum Erstellen eines Beitrags senden, wird ein 401-Fehler mit der Meldung „Nicht authentifiziert“ zurückgegeben und die Beitragserstellung schlägt fehl.
Wenn das Autorisierungstoken enthalten ist, werden die Daten erfolgreich erstellt.
In ähnlicher Weise erfordert die API zum Aktualisieren und Löschen von Beiträgen, dass die Anfrage mit dem Token im Authorization-Header gesendet wird.
Benutzerzugriffsbeschränkungen wurden mit der API-Token-Authentifizierung implementiert.
Es gibt jedoch immer noch ein Problem.
Im aktuellen Zustand können authentifizierte Benutzer die Beiträge anderer Benutzer aktualisieren oder löschen.
Fügen Sie einen Prozess hinzu, um zu überprüfen, ob der Benutzer Eigentümer des Beitrags ist.
Schreiben Sie eine Autorisierungslogik in die Laravel-Richtliniendatei, sodass nur die Benutzer, die Eigentümer der Beiträge sind, die Beiträge aktualisieren und löschen können.
PostController.php
sail php artisan install:api
PostPolicy.php
sail artisan migrate
modifymethod:
api.php
2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Wenden Sie die Middleware auth::sanctum für das Abmelderouting an und legen Sie die API-Token-Authentifizierung fest.
AuthController.php
Route::post('/register', [AuthController::class, 'register']);
Der Server löscht das aktuelle API-Token aus der Datenbank. Dadurch wird der Token ungültig und kann nicht erneut verwendet werden.
Der Server gibt eine Antwort an den Client zurück, die angibt, dass die Abmeldung erfolgreich war.
In diesem Artikel wurde die API-Token-Authentifizierung anhand von Diagrammen leicht verständlich erklärt.
Durch die Nutzung von Laravel Sanctum kann eine einfache und sichere Authentifizierung mithilfe von API-Token erreicht werden, die es Clients ermöglichen, einzelnen Benutzern Zugriffsrechte mit einer Flexibilität zu gewähren, die sich von der sitzungsbasierten Authentifizierung unterscheidet. Mithilfe von Middleware und Richtlinien können API-Anfragen außerdem effizient geschützt, der Zugriff eingeschränkt und der Ressourcenbesitz überprüft werden.
Das obige ist der detaillierte Inhalt vonAPI-Token-Authentifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!