Heim  >  Artikel  >  PHP-Framework  >  Laravel-Entwicklung: Wie implementiert man die APIOAuth2-Authentifizierung mit Laravel Passport?

Laravel-Entwicklung: Wie implementiert man die APIOAuth2-Authentifizierung mit Laravel Passport?

WBOY
WBOYOriginal
2023-06-15 10:28:561198Durchsuche

Laravel ist ein sehr beliebtes PHP-Framework. Es ist einfach zu verwenden, hoch skalierbar und bietet eine hohe Codelesbarkeit. Laravel bietet außerdem viele Zusatzpakete (Pakete) zur Implementierung verschiedener Funktionen, darunter Laravel Passport, ein API-Paket zur Implementierung der OAuth2-Authentifizierung.

OAuth2 ist ein beliebtes Autorisierungsframework, das den Autorisierungsprozess vereinfacht und häufig in Web- und Mobilanwendungen verwendet wird. Um OAuth2 verwenden zu können, müssen wir einen Autorisierungsserver implementieren, um Token zu generieren und Clients die Nutzung der API zu ermöglichen. Laravel Passport bietet uns eine einfache Möglichkeit, die OAuth2-Authentifizierung zu implementieren.

In diesem Artikel wird erläutert, wie Sie Laravel Passport zur Implementierung der OAuth2-Authentifizierung verwenden. Vor dem Start wird davon ausgegangen, dass das Laravel-Framework bereits installiert ist.

Laravel Passport installieren

Sie können Composer verwenden, um Laravel Passport zu installieren. Führen Sie den folgenden Befehl im Stammverzeichnis Ihrer Laravel-Anwendung aus:

composer require laravel/passport

Sobald die Installation abgeschlossen ist, müssen Sie den folgenden Befehl ausführen, um die erforderlichen Tabellen für Laravel Passport zu erstellen:

php artisan migrate

Führen Sie anschließend den folgenden Befehl aus, um Verschlüsselungsschlüssel zu generieren für Laravel Passport:

php artisan passport:install

Der generierte Schlüssel wird zum Verschlüsseln des generierten Tokens verwendet.

Passport einrichten

Nach Abschluss der Installation müssen Sie Laravel Passport in Ihrer Anwendung konfigurieren. Die folgenden Schritte sind erforderlich:

Passport aktivieren

Um Laravel Passport zu aktivieren, müssen Sie zunächst Passport::routes aufrufen ()-Methode. Diese Methode registriert die erforderlichen Routen:

//在bootstrap/app.php文件中加入下面这行代码
LaravelPassportPassport::routes();

Automatische Token-Aktualisierung aktivieren

Standardmäßig läuft das Token automatisch ab, nachdem es abgelaufen ist. Wenn Sie Token nach ihrem Ablauf automatisch aktualisieren möchten, können Sie die Methode Passport::refreshTokensExpireIn() in AuthServiceProvider verwenden. Wir fügen dem AuthServiceProvider das folgende Code-Snippet hinzu:

//在AppProvidersAuthServiceProvider.php文件中加入下面这段代码
use LaravelPassportPassport;

//其他代码...

public function boot()
{
    $this->registerPolicies();

    Passport::routes();

    Passport::tokensExpireIn(Carbon::now()->addDays(15));

    Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
}

In diesem Beispiel setzt die Methode tokensExpireIn() die Token-Ablaufzeit auf 15 Tage und die Methode refreshTokensExpireIn() Die Methode legt die Ablaufzeit des automatisch aktualisierten Tokens auf 30 Tage fest. tokensExpireIn()方法将令牌的过期时间设置为15天,而refreshTokensExpireIn()方法将自动刷新的令牌的到期时间设置为30天。

在User模型中使用Passport

现在需要在User模型中启用Laravel Passport功能。可以通过在User类上使用Passport::use()方法来实现:

//在app/User.php文件中加入下面这段代码
use LaravelPassportHasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

创建OAuth2客户端

在应用程序中使用OAuth2身份验证时,需要通过授权服务器来生成API令牌。为了与授权服务器通信,需要创建客户端。可以通过运行passport:client命令来创建客户端:

php artisan passport:client --password

运行此命令后,会提示输入应用程序名称,如果不想输入名称,则可以选择使用默认值,回车即可。

运行完成后,将会生成一个client_id和client_secret。client_id和client_secret将用于与授权服务器进行通信。

创建API路由

在创建OAuth2客户端后,需要创建API路由以使授权服务器可以访问API。

//在routes/api.php文件中加入以下代码
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

在这个例子中,通过使用auth:api

Passport im Benutzermodell verwenden

Jetzt müssen Sie die Laravel Passport-Funktion im Benutzermodell aktivieren. Dies kann durch die Verwendung der Passport::use()-Methode für die User-Klasse erreicht werden:

Authorization: Bearer [access_token]

Erstellen eines OAuth2-Clients

Wenn Sie die OAuth2-Authentifizierung in Ihrer Anwendung verwenden, müssen Sie das API-Token über den Autorisierungsserver generieren. Um mit dem Autorisierungsserver zu kommunizieren, muss ein Client erstellt werden. Sie können einen Client erstellen, indem Sie den Befehl passport:client ausführen:

rrreee

Nachdem Sie diesen Befehl ausgeführt haben, werden Sie aufgefordert, den Namen der Anwendung einzugeben. Wenn Sie den Namen nicht eingeben möchten, können Sie dies tun Wählen Sie die Verwendung des Standardwerts und drücken Sie die Eingabetaste.

Nachdem der Vorgang abgeschlossen ist, werden eine client_id und ein client_secret generiert. client_id und client_secret werden für die Kommunikation mit dem Autorisierungsserver verwendet.

API-Route erstellen🎜🎜Nachdem Sie den OAuth2-Client erstellt haben, müssen Sie die API-Route erstellen, um die API für den Autorisierungsserver zugänglich zu machen. 🎜rrreee🎜In diesem Beispiel ist die OAuth2-Authentifizierung für die Route erforderlich, die mithilfe der Middleware auth:api angegeben wird. Wenn kein gültiges API-Token bereitgestellt wird, gibt diese Route eine 401 Unauthorized HTTP-Antwort zurück. 🎜🎜HTTP-Anfrage zur Authentifizierung senden🎜🎜Sie sind nun bereit, eine Anfrage an die API zu senden und sich mit OAuth2-Anmeldeinformationen zu authentifizieren. 🎜🎜Sie können Tools wie Postman verwenden, um die API zu testen, und die Anfrage muss ein gültiges API-Token enthalten. In Postman ist es möglich, einen Autorisierungsheader in die Anfrage aufzunehmen, zum Beispiel: 🎜rrreee🎜access_token muss durch das zuvor generierte Token ersetzt werden. 🎜🎜Zusammenfassung🎜🎜Laravel Passport ist ein benutzerfreundlicher OAuth2-Server, der die Implementierung der API-Authentifizierung erleichtert, ohne viel Code schreiben zu müssen. In diesem Artikel haben wir die Schritte zur Implementierung der OAuth2-Authentifizierung mit Laravel Passport behandelt und gezeigt, wie man einen OAuth2-Client und API-Routen erstellt und sich über HTTP-Anfragen authentifiziert. Wenn Ihre Anwendung eine API-Authentifizierung verwenden muss, ist Laravel Passport möglicherweise eine der idealen Optionen für Sie. 🎜

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie implementiert man die APIOAuth2-Authentifizierung mit Laravel Passport?. 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