Heim Backend-Entwicklung PHP-Tutorial API-Token-Authentifizierung

API-Token-Authentifizierung

Nov 09, 2024 pm 08:44 PM

Einführung

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

  • So funktioniert die API-Token-Authentifizierung
  • So installieren Sie Laravel Sanctum
  • API-Token bei Benutzerregistrierung und Anmeldung generieren
  • API-Token-Authentifizierung, um den Zugriff einzuschränken und den Ressourcenbesitz zu überprüfen
  • Löschen des API-Tokens beim Abmelden

So funktioniert die API-Token-Authentifizierung

API Token Authentication

1. Benutzerregistrierungs-/Anmeldeanfrage

Der Client sendet die Anmeldeinformationen des Benutzers (z. B. E-Mail, Passwort) an den Auth-Server.

2. Benutzerauthentifizierung

Der Authentifizierungsserver überprüft die Anmeldeinformationen, um zu prüfen, ob der Benutzer existiert und ob das Passwort korrekt ist.

3.  API-Token-Generierung

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.

4. API-Anfrage

Der Client sendet eine API-Anfrage an den Ressourcenserver und hängt das generierte API-Token an den Autorisierungsheader an.

5.  API-Token-Verifizierung

Ressourcenserver überprüft API-Token. Wenn das API-Token gültig ist, wird die Anfrage verarbeitet.

6. API-Antwort

Ressourcenserver gibt API-Antwort zurück.

So installieren Sie Laravel Sanctum

sail php artisan install:api
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dadurch wird die Tabelle personal_access_tokens erstellt.

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Generieren eines API-Tokens bei der Benutzerregistrierung und -anmeldung

API Token Authentication

Beispielcode

api.php

Route::post('/register', [AuthController::class, 'register']);
Nach dem Login kopieren
Nach dem Login kopieren

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
    ];
}
Nach dem Login kopieren

Benutzerregistrierung

  1. Benutzerregistrierung.
  2. Der neue Benutzer wird in der Benutzertabelle gespeichert.
  3. Ein API-Token wird generiert. (createToken)
  4. Das generierte API-Token und die Benutzerinformationen werden in der Tabelle personal_access_tokens gespeichert und das API-Token wird dem Benutzer bereitgestellt.

Beispielcode

api.php

*Route*::post('/login', [*AuthController*::class, 'login']);
Nach dem Login kopieren

AuthController.php

sail php artisan install:api
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Benutzeranmeldung

  1. Benutzeranmeldung.
  2. Überprüft, ob der Benutzer in der Benutzertabelle vorhanden ist.
  3. API-Token wird nach erfolgreicher Anmeldung generiert. (createToken)
  4. Das generierte API-Token und die Benutzerinformationen werden in der Tabelle personal_access_tokens gespeichert und das API-Token wird dem Benutzer bereitgestellt.

*Hinweis: Jedes Mal, wenn sich ein Benutzer anmeldet, wird ein neues API-Token generiert.

API-Token-Generierung

Senden Sie mit Postman eine API-Anfrage mit den folgenden Bedingungen, um die Antwort zu überprüfen.

API Token Authentication

Bei erfolgreicher Anmeldung wird ein API-Token generiert.

API Token Authentication

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.

API-Token-Authentifizierung

API Token Authentication

  1. Der Benutzer sendet eine API-Anfrage und fügt das API-Token in den Autorisierungsheader ein.
  2. Die Middleware auth:sanctum gleicht das von der API-Anfrage empfangene API-Token mit dem in der Tabelle „personal_access_tokens“ gespeicherten API-Token ab.
  3. Wenn das API-Token erfolgreich authentifiziert wurde, verarbeitet der Ressourcenserver die API-Anfrage.
  4. Der authentifizierte Benutzer kann Beiträge aktualisieren oder löschen.
  5. Ressourcenserver gibt API-Antwort zurück.

Beschränken Sie den Zugriff auf Post-Funktionen

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.

Zugangskontrollstandards

Benutzer-APIs

  • indexieren, anzeigen Diese Aktionen stellen allgemein öffentliche Informationen bereit und erfordern keine API-Token-Authentifizierung für eine bessere Benutzererfahrung und SEO.
  • Speichern, Aktualisieren, Löschen Um unbefugten Zugriff zu verhindern und die Datenintegrität aufrechtzuerhalten, ist eine API-Token-Authentifizierung erforderlich.

Admin-APIs

  • Indizieren, Anzeigen, Speichern, Aktualisieren, Löschen Zur Erhöhung der Sicherheit sollten APIs, die nicht öffentlich sein müssen, durch die Anforderung einer Benutzerauthentifizierung für alle Controller-Aktionen gesichert werden.

Codierung

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
sail artisan migrate
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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.

API Token Authentication

Wenn das Autorisierungstoken enthalten ist, werden die Daten erfolgreich erstellt.

API Token Authentication

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.

Post-Inhaber-Verifizierung

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.

API Token Authentication

  1. Der Benutzer sendet eine API-Anfrage und fügt das API-Token in den Autorisierungsheader ein.
  2. Die Middleware auth:sanctum gleicht das von der API-Anfrage empfangene API-Token mit dem in der Tabelle personal_access_tokens gespeicherten API-Token ab.
  3. Die Middleware auth:sanctum ruft den mit dem API-Token verknüpften Benutzer ab und prüft, ob dieser Benutzer Eigentümer des Zielbeitrags ist.
  4. Wenn das API-Token erfolgreich authentifiziert wurde und der Benutzer Eigentümer des Zielbeitrags ist, verarbeitet der Ressourcenserver die API-Anfrage.
  5. Der authentifizierte Benutzer, der Eigentümer von Beiträgen ist, kann Beiträge aktualisieren und löschen.
  6. Ressourcenserver gibt API-Antwort zurück.

Codierung

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • Eine Anfrage erhalten
    • Der Benutzer sendet eine API-Anfrage und fügt das API-Token in den Autorisierungsheader ein.
  • Verifizierung des Tokens
    • Der Ressourcenserver erhält das API-Token aus dem Autorisierungsheader der API-Anfrage. Und überprüft dann, ob das von der Anfrage empfangene API-Token mit dem in der Tabelle „personal_access_tokens“ gespeicherten API-Token übereinstimmt.
  • Benutzeridentifikation
    • Wenn das Token gültig ist, wird der mit dem Token verknüpfte Benutzer identifiziert. Wir können den identifizierten Benutzer mit der Methode $request->user() abrufen.
  • Aufruf einer Richtlinie Die Methode Gate::authorize übergibt den authentifizierten Benutzer und die Ressourcenobjekte als Argumente an die Methoden der Richtlinie.

PostPolicy.php

sail artisan migrate
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

modifymethod:

  • Argumente:
    • $user: Instanz des aktuell authentifizierten Benutzers.
    • $post: Eine Instanz des Post-Modells.
  • Logik:
    • Überprüfen Sie, ob der aktuell authentifizierte Benutzer Eigentümer des angegebenen Beitrags ist.

Der Beitrag anderer Benutzer wird aktualisiert

API Token Authentication

  1. Legen Sie die Post-ID als Pfadparameter für den Post-Update-API-Endpunkt fest.
  2. Fügen Sie das Token eines Benutzers, dem dieser Beitrag nicht gehört, in den Autorisierungsheader ein.
  3. Gibt eine 403-Fehlermeldung zurück, die besagt, dass Sie nicht der Eigentümer des Beitrags sind.

Löschung des API-Tokens beim Abmelden

API Token Authentication

Abmeldefluss

  1. Benutzer sendet API-Anfrage und fügt API-Token in den Autorisierungsheader ein
  2. Die Middleware auth:sanctum gleicht das von der API-Anfrage empfangene API-Token mit dem in der Tabelle personal_access_tokens gespeicherten API-Token ab.
  3. Wenn das API-Token erfolgreich authentifiziert wurde, verarbeitet der Ressourcenserver die API-Anfrage.
  4. API-Token des authentifizierten Benutzers aus der Tabelle personal_access_tokens löschen.
  5. Ressourcenserver gibt API-Antwort zurück.

Codierung

api.php

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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']);
Nach dem Login kopieren
Nach dem Login kopieren

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.

Zusammenfassung

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Apr 06, 2025 am 12:02 AM

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Was sind Aufzählungen (Enums) in PHP 8.1? Was sind Aufzählungen (Enums) in PHP 8.1? Apr 03, 2025 am 12:05 AM

Die Aufzählungsfunktion in Php8.1 verbessert die Klarheit und Type des Codes, indem benannte Konstanten definiert werden. 1) Aufzählungen können Ganzzahlen, Zeichenfolgen oder Objekte sein, die die Lesbarkeit der Code und die Type der Type verbessern. 2) Die Aufzählung basiert auf der Klasse und unterstützt objektorientierte Merkmale wie Traversal und Reflexion. 3) Die Aufzählung kann zum Vergleich und zur Zuordnung verwendet werden, um die Sicherheit der Typ zu gewährleisten. 4) Aufzählung unterstützt das Hinzufügen von Methoden zur Implementierung einer komplexen Logik. 5) Strenge Typ Überprüfung und Fehlerbehandlung können häufig auftretende Fehler vermeiden. 6) Die Aufzählung verringert den magischen Wert und verbessert die Wartbarkeit, achten Sie jedoch auf die Leistungsoptimierung.

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind REST -API -Designprinzipien? Was sind REST -API -Designprinzipien? Apr 04, 2025 am 12:01 AM

Die RESTAPI -Designprinzipien umfassen Ressourcendefinition, URI -Design, HTTP -Methodenverbrauch, Statuscode -Nutzung, Versionskontrolle und Hassoas. 1. Ressourcen sollten durch Substantive dargestellt und in einer Hierarchie aufrechterhalten werden. 2. HTTP -Methoden sollten ihrer Semantik entsprechen, z. B. Get wird verwendet, um Ressourcen zu erhalten. 3. Der Statuscode sollte korrekt verwendet werden, z. B. 404 bedeutet, dass die Ressource nicht vorhanden ist. 4. Die Versionskontrolle kann über URI oder Header implementiert werden. 5. Hateoas startet Client -Operationen durch Links als Antwort.

Wie können Sie mit Ausnahmen in PHP effektiv umgehen (versuchen Sie, schließlich zu werfen)? Wie können Sie mit Ausnahmen in PHP effektiv umgehen (versuchen Sie, schließlich zu werfen)? Apr 05, 2025 am 12:03 AM

In PHP wird das Ausnahmebehandlung durch den Versuch, Fang, schließlich und werfen Keywords erreicht. 1) Der Try -Block umgibt den Code, der Ausnahmen auslösen kann. 2) Der Catch -Block behandelt Ausnahmen; 3) Block stellt schließlich sicher, dass der Code immer ausgeführt wird. 4) Wurf wird verwendet, um Ausnahmen manuell zu werfen. Diese Mechanismen verbessern die Robustheit und Wartbarkeit Ihres Codes.

Was sind anonyme Klassen in PHP und wann könnten Sie sie verwenden? Was sind anonyme Klassen in PHP und wann könnten Sie sie verwenden? Apr 04, 2025 am 12:02 AM

Die Hauptfunktion anonymer Klassen in PHP besteht darin, einmalige Objekte zu erstellen. 1. Anonyme Klassen ermöglichen es, Klassen ohne Namen direkt im Code zu definieren, was für vorübergehende Anforderungen geeignet ist. 2. Sie können Klassen erben oder Schnittstellen implementieren, um die Flexibilität zu erhöhen. 3. Achten Sie bei der Verwendung auf Leistung und Code -Lesbarkeit und vermeiden Sie es, dieselben anonymen Klassen wiederholt zu definieren.

See all articles