Heim >PHP-Framework >Laravel >Laravel-Entwicklung: Wie implementiert man API-Authentifizierung und -Autorisierung mit Laravel Sanctum?

Laravel-Entwicklung: Wie implementiert man API-Authentifizierung und -Autorisierung mit Laravel Sanctum?

PHPz
PHPzOriginal
2023-06-13 19:07:182683Durchsuche

Laravel ist ein beliebtes PHP-Webentwicklungs-Framework, das viele leistungsstarke Funktionen und Tools bietet, um die Entwicklung und Wartung von Webanwendungen zu vereinfachen. Laravel Sanctum ist ein Plugin für das Laravel-Framework, das API-Authentifizierungs- und Autorisierungsfunktionen bietet, um Ihre API-Endpunkte einfach vor unbefugtem Zugriff zu schützen.

In diesem Artikel erfahren Sie, wie Sie die API-Authentifizierung und -Autorisierung mit Laravel Sanctum implementieren.

1. Was ist Laravel Sanctum?

Laravel Sanctum ist ein leichtes Authentifizierungspaket, das einfache, aber leistungsstarke API-Authentifizierungs- und Autorisierungsfunktionen bietet. Es basiert auf Laravel-Middleware und HTTP-Authentifizierung und ermöglicht es uns, Authentifizierungstokens sicher an API-Anfragen anzuhängen.

Laravel Sanctum unterstützt zwei Authentifizierungsmethoden: Cookie-basierte Authentifizierung und Token-basierte Authentifizierung. Bei der Cookie-basierten Authentifizierung wird die Laravel-Middleware verwendet, um zu überprüfen, ob in der Anfrage ein gültiges Authentifizierungs-Cookie vorhanden ist. Eine weitere Möglichkeit, das Token in der Header-Klasse zu überprüfen und zu prüfen, ob es gültig ist.

2. Installieren Sie Laravel Sanctum

Bevor wir beginnen, müssen wir zuerst Laravel Sanctum installieren. Laravel Sanctum kann einfach mit dem Composer-Paketmanager installiert werden:

composer require laravel/sanctum

Natürlich kann es auch manuell installiert werden, indem die folgenden Anforderungen in die Datei „composer.json“ hinzugefügt werden:

{
  "require": {
    "laravel/sanctum": "^2.9"
  }
}

Wenn Sie fertig sind, führen Sie den folgenden Befehl aus, um Laravel zu veröffentlichen Sanctum-Konfigurationsdatei und Datenbankmigrationsdatei:

php artisan vendor:publish --tag=sanctum-config
php artisan vendor:publish --tag=sanctum-migrations
php artisan migrate

3. Laravel Sanctum konfigurieren

  1. Zuerst müssen Sie die Laravel/Sanctum-Middleware zum HTTP-Kern Ihrer Anwendung hinzufügen.

Ändern Sie die Datei app/Http/kernel.php und fügen Sie die Sanctum-Middleware hinzu:

// app/Http/Kernel.php

protected $middleware = [
    // ...
    LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class,
];

protected $middlewareGroups = [
    'web' => [
        // ...
    ],

    'api' => [
        LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class,
        'throttle:api',
        IlluminateRoutingMiddlewareSubstituteBindings::class,
    ],
];

Dadurch wird sichergestellt, dass die Cookie-basierte Authentifizierung von Sanctum bei jeder Anfrage verwendet werden kann.

  1. Als nächstes müssen Sie die Authentifizierungskonfigurationsdatei konfigurieren.

Öffnen Sie die Datei config/auth.php, suchen Sie nach Standardeinstellungen und Guards und konfigurieren Sie sie für die Verwendung von Sancttum.

// config/auth.php

'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
        'hash' => false,
    ],
],

Dadurch können wir Sanctum für die tokenbasierte Authentifizierung verwenden.

  1. Sanctum-Anbieter hinzufügen.

Wenn Sie eine neue Version von Laravel verwenden, müssen Sie keinen Anbieter hinzufügen. Wenn Sie eine ältere Version verwenden, öffnen Sie bitte die Datei config/app.php und fügen Sie die folgende Zeile im Provider-Array hinzu:

LaravelSanctumSanctumServiceProvider::class,

IV Jetzt, da wir Laravel Sanctum konfiguriert haben, erfahren wir mehr darüber weiter So erstellen Sie mit Sanctum Autorisierungstoken.

Nachdem sich der Benutzer angemeldet hat, erstellen Sie in der Benutzertabelle ein API-Token für den Benutzer.
  1. public function createToken(Request $request)
    {
        $user = Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')]);
    
        if($user) {
            $token = $user->createToken('API Token')->plainTextToken;
            
            return response()->json([
              'token' => $token,
            ]);
        } else {
            return response()->json([
              'message' => 'Invalid credentials',
            ], 401);
        }
    }
Nachdem Sie das Token erstellt haben, können Sie es zum Autorisierungsheader jeder Anfrage hinzufügen. Es kann wie folgt in der Axios-Anfrage festgelegt werden:
  1. axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
  2. 5. API-Authentifizierung und -Autorisierung implementieren

Nach dem Erstellen des Autorisierungstokens können wir Sanctum verwenden, um den API-Endpunkt vor unbefugtem Zugriff zu schützen. Wir können die Routing-Middleware Laravel verwenden, um das Authentifizierungstoken zu überprüfen und unbefugten Zugriff zu verweigern.

Definieren Sie zunächst die geschützte API-Route in der Datei api.php.
  1. // routes/api.php
    
    Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
        return $request->user();
    });
  2. Diese Route wird mit der Sanctum-Authentifizierungs-Middleware geschützt.

Als nächstes greifen Sie auf die geschützte Route zu und sehen sich die Ergebnisse an. Dies kann mit dem folgenden Befehl getestet werden:
  1. php artisan serve
  2. Jetzt kann auf die Route /api/user zugegriffen werden, um die Details des angemeldeten Benutzers anzuzeigen. Ohne den Authorization-Header können Sie jetzt nicht darauf zugreifen und erhalten den HTTP-Statuscode 401 Unauthorized zurück.

6. Ende

Laravel Sanctum ist eine leistungsstarke und benutzerfreundliche Authentifizierungs- und Autorisierungslösung, die Authentifizierung und Autorisierung problemlos in Laravel-Webanwendungen und Web-APIs implementieren kann. Es schützt Ihre API-Endpunkte problemlos vor unbefugtem Zugriff und ermöglicht Ihnen die einfache Steuerung, welche Benutzer auf welche API-Endpunkte zugreifen können. In diesem Artikel haben wir gelernt, wie man Laravel Sanctum installiert und konfiguriert und wie man damit Autorisierungstoken erstellt und API-Authentifizierung und -Autorisierung implementiert.

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie implementiert man API-Authentifizierung und -Autorisierung mit Laravel Sanctum?. 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