...
✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So verwenden Sie Laravel Passport für die REST-API-Authentifizierung

60

In der heutigen Webentwicklung sind APIs oder Webservices sehr beliebt. Bei der Entwicklung einer mobilen Anwendung spielt die API eine Rolle als Brücke zur Weitergabe von Daten zwischen der mobilen Anwendung und dem Web. Es ist wichtig, APIs-Aufrufe sicher und authentifiziert zu halten, um die Daten zu schützen, die zwischen Anwendung zu Anwendung übertragen werden.

In diesem Artikel beschäftigen wir uns mit Laravel Passport, mit dem wir APIs authentifizieren können. Passport ist auf dem OAuth2-Server aufgebaut, der viel sicherer ist.

Beim Umgang mit den APIs haben wir früher ein Zugriffstoken gesendet, um zu überprüfen, ob die eingehende Anfrage gültig ist. Wenn es autorisiert ist, sollte es nur die Interaktion mit der Anwendung zulassen. Der Laravel-Pass bietet eine bequeme Möglichkeit, Token für den API-Aufruf zu erstellen und zu überprüfen.

Installation

Für den Einstieg gehen wir davon aus, dass Sie Laravel auf Ihrem System installiert haben. Um den Passport zu installieren, führen Sie den folgenden Befehl im Terminal aus.

composer require laravel/passport

Der obige Befehl würde mit der neuesten Version von Laravel funktionieren. Wenn Sie eine ältere Version verwenden, unterscheidet sich der Befehl je nach Laravel-Version geringfügig. Wenn beispielsweise Laravel 5.5 installiert ist, sollte Ihr Befehl lauten:

composer require laravel/passport=~4.0

Dieser Befehl erstellt ein eigenes Datenbankmigrationsverzeichnis. Bei diesen Migrationen werden Tabellen erstellt, in denen die Clients und Zugriffstoken gespeichert werden.

config/app.phpRegistrieren Sie in Ihrer Datei den Passport-Dienstanbieter im Anbieter-Array.

config/app.php

'providers' =>[
  ....
  LaravelPassportPassportServiceProvider::class,
],

Lassen Sie uns die Migration ausführen, die die Datenbanktabellen für Passport erstellt.

php artisan migrate

Wenn Sie jetzt zu Ihrem Datenbankclient gehen, werden Sie die neuen Tabellen bemerken, die in Ihrer Datenbank erstellt wurden.

So verwenden Sie Laravel Passport für die REST-API-Authentifizierung

Führen Sie als Nächstes den folgenden Befehl aus, der Verschlüsselungsschlüssel erstellt, um sichere Zugriffstoken zu generieren. Der folgende Befehl erstellt Clients mit „persönlichem Zugriff” und „Passworterteilung”, die in der Tabelle gespeichert werden oauth_clients.

php artisan passport:install

So verwenden Sie Laravel Passport für die REST-API-Authentifizierung

Der Benutzer kann diese Token für die nächsten Schritte kopieren. Tatsächlich werden wir zwei Möglichkeiten zum Erstellen von Zugriffstoken sehen. Einer erfolgt über diese „Passwortgewährung”-Clients und ein anderer über die Anmeldeauthentifizierung.

Passkonfiguration

Gehen Sie zu den Laravel-Verzeichnissen und öffnen Sie die AppUserModelldatei. In dieser Datei müssen wir ein LaravelPassportHasApiTokensMerkmal hinzufügen .

app/User.php.

<?php
 
namespace App;
 
use LaravelPassportHasApiTokens;
use IlluminateNotificationsNotifiable;
use IlluminateFoundationAuthUser as Authenticatable;
 
class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
    ....
}

Danach müssen wir die Passport::routesMethode in der bootMethode von aufrufen AuthServiceProvider.

app/Provider/AuthServiceProvider.php

<?php
 
namespace AppProviders;
 
use LaravelPassportPassport;
use IlluminateSupportFacadesGate;
use IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;
 
class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'AppModel' => 'AppPoliciesModelPolicy',
    ];
 
    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
 
        Passport::routes();
    }
}

config/auth.phpSetzen Sie zuletzt in der Datei die Option ‘driver’ des ‘api’-Authentifizierungswächters wie folgt auf ‘passport’:

config/auth.php

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

Erstellen Sie eine REST-API und schützen Sie sie mit Laravel Passport

Laravel erstellt eine Datei, routes/api.phpin der wir unseren REST-APIs-Endpunkt deklarieren sollten. Wir können unsere API schützen, indem wir ihr die Middleware hinzufügen auth:api.

routen/api.php

Route::get('/api/categories', 'ApiController@categories')->middleware('auth:api');

Für mehrere Endpunkte müssen wir nicht jedes Mal Middleware hinzufügen. Stattdessen können wir es wie folgt machen:

Route::group(['middleware' => 'auth:api'], function(){
    Route::get('products', 'ApiController@products');
    Route::get('categories', 'ApiController@categories');
});

Da unser Endpunkt „Produkte” geschützt ist, wenn wir ihn direkt ohne Autorisierungstoken aufrufen, erhalten wir die Antwort „Nicht authentifiziert”.

So verwenden Sie Laravel Passport für die REST-API-Authentifizierung

Das bedeutet, dass beim Aufrufen der API unbedingt das Autorisierungstoken in jeder Anfrage übergeben werden muss. Passport überprüft also das Token und gibt die Antwort zurück.

Zugriffstoken für API generieren

Es gibt mehrere Möglichkeiten, ein Zugriffstoken für die Anwendung zu erstellen. Wir werden 2 davon für dieses Tutorial sehen.

Erste Wahl

Als erstes müssen Sie /oauth/token mit den erforderlichen Parametern aufrufen und Sie erhalten den Token als Antwort.

Wir gehen davon aus, dass Sie eine Guzzle-HTTP-Bibliothek verwenden, um API-Anfragen zu stellen. Angenommen, Sie haben ein anderes Projekt, von dem aus Sie eine API-Anfrage stellen.

<?php
require_once "vendor/autoload.php";
 
use GuzzleHttpClient;
 
$client = new Client([
    // Base URI is used with relative requests
    'base_uri' => 'http://laravel.dev',
]);
 
$response = $client->post('/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => '2',
        'client_secret' => '8qyKG7WKb3O3FZh2hUyEOZ3dAj5l9S5ljn2bdeJf',
        'username' => '[email protected]',
        'password' => 'my_password',
        'scope' => '*',
    ],
]);
 
$arr_result = json_decode((string) $response->getBody(), true);

Der obige Code gibt ein Array zurück, das einen Schlüssel ‘access_token’ enthält. Die Parameter client_id und client_secret haben wir beim Ausführen erhalten passport:install. Sie können diese Details auch Ihrer Datenbanktabelle ‘oauth_clients’ entnehmen.

Versuchen Sie es erneut vom Postboten, indem Sie das access_token an den Endpunkt ‘products’ übergeben, und wir sollten die Antwort erhalten.

So verwenden Sie Laravel Passport für die REST-API-Authentifizierung

Tatsächlich müssen Sie diese API wie folgt aufrufen:

$response = $client->get('/products', [
    'headers' => [
        'Authorization' => 'Bearer '.$access_token,
    ]
]);
 
$arr_result = json_decode((string) $response->getBody(), true);

Zweite Option

Bei der ersten Option sollten Sie client_id und client_secret kennen, um Ihr Token zu generieren. Dies ist in einigen Szenarien möglicherweise nicht bequem. Passport bietet eine weitere Option zum Generieren von Zugriffstoken nur über die Anmeldeinformationen.

Fügen ApiController.phpSie in unserem die Login-Methode mit Post-Request hinzu und schreiben Sie den folgenden Code hinein.

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use IlluminateSupportFacadesStorage;
use IlluminateSupportFacadesAuth;
 
class ApiController extends Controller
{
    public function login(){ 
        if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){ 
            $user = Auth::user(); 
            $success['token'] =  $user->createToken('MyApp')-> accessToken; 
            return response()->json(['success' => $success], 200); 
        } 
        else{ 
            return response()->json(['error'=>'Unauthorised'], 401); 
        } 
    }

Um diesen API-Aufruf zu tätigen, müssen wir eine Route dafür registrieren.

routen/api.php

Route::post('login', 'ApiController@login');

Der Benutzer kann eine HTTP-Post-Anfrage an diese API senden, indem er den folgenden Code schreibt:

$response = $client->post('/api/login', [
    'form_params' => [
        'email' => '[email protected]',
        'password' => 'my_password'
    ],
]);
 
$arr_result = json_decode((string) $response->getBody(), true);

So verwenden Sie Laravel Passport für die REST-API-Authentifizierung

Wir hoffen, dass Sie die Verwendung von Laravel Passport für die REST-API-Authentifizierung verstanden haben. Wir würden gerne Ihre Meinung im Kommentarbereich unten hören. Wir empfehlen auch, den Artikel Laravel API Tutorial: How to Build and Test a RESTful API durchzugehen, den wir für die Leser als nützlich empfanden.

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen