日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Laravel——Passport OAuth

發布時間:2025/3/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Laravel——Passport OAuth 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安裝

在開始之前,請通過 Composer 包管理器安裝 Passport:

composer require laravel/passport 復制代碼

Passport 服務提供器使用框架注冊自己的數據庫遷移目錄,因此在注冊提供器后,就應該運行 Passport 的遷移命令來自動創建存儲客戶端和令牌的數據表:

php artisan migrate 復制代碼

接下來,運行 passport:install 命令來創建生成安全訪問令牌時所需的加密密鑰,同時,這條命令也會創建用于生成訪問令牌的「個人訪問」客戶端和「密碼授權」客戶端:

php artisan passport:install 復制代碼

配置

上面命令執行后,請將 Laravel\Passport\HasApiTokens Trait 添加到 User 模型中, 這個 Trait 會給你的模型提供一些輔助函數,用于檢查已認證用戶的令牌和使用范圍:

Models/User.php

class User extends Authenticatable {use HasApiTokens, Notifiable; } 復制代碼

在 AuthServiceProvider 的 boot 方法中調用 Passport::routes 函數。這個函數會注冊發出訪問令牌并撤銷訪問令牌、客戶端和個人訪問令牌所必需的路由:

Provinders/AuthServiceProvider.php

public function boot() {$this->registerPolicies();Passport::routes();//設置token過期時間Passport::tokensExpireIn(now()->addDays(1)); //設置刷新token過期時間Passport::refreshTokensExpireIn(now()->addDays(30)); } 復制代碼

將配置文件 config/auth.php 中授權看守器 guards 的 api 的 driver 選項改為 passport。此調整會讓你的應用程序在在驗證傳入的 API 的請求時使用 Passport 的 TokenGuard 來處理:

config/auth.php

'guards' => ['web' => ['driver' => 'session','provider' => 'users',],'api' => ['driver' => 'passport','provider' => 'users','hash' => false,],], 復制代碼

密碼模式

在應用程序通過密碼授權機制來發布令牌之前,在 passport:client 命令后加上 --password 參數來創建密碼授權的客戶端。如果你已經運行了 passport:install 命令,則不需要再運行此命令:

php artisan passport:client --password

請求令牌

創建密碼授權的客戶端后,就可以使用用戶的電子郵件地址和密碼向 /oauth/token 路由發出 POST 請求來獲取訪問令牌。而該路由已經由 Passport::routes 方法注冊,因此不需要手動定義它。如果請求成功,會在服務端返回的 JSON 響應中收到一個 access_token 和 refresh_token:

請求參數:

'grant_type' => 'password', 'client_id' => 'client-id', //需要使用password_client=1 'client_secret' => 'client-secret', 'username' => 'taylor@laravel.com', 'password' => 'my-password', 'scope' => '', 復制代碼

自定義用戶名字段

當使用密碼授權時,Passport 默認使用 email 作為「用戶名」。但是,你可以通過在模型上定義一個 findForPassport 方法來自定義用戶名字段:

Models/User.php

/*** 通過用戶名找到對應的用戶信息** @param string $username* @return \App\User*/ public function findForPassport($username) {return $this->where('username', $username)->first(); } 復制代碼

路由保護

通過中間件

Passport 包含一個 驗證保護機制 可以驗證請求中傳入的訪問令牌。配置 api 的看守器使用 passport 驅動程序后,只需要在需要有效訪問令牌的任何路由上指定 auth:api 中間件:

Route::middleware('auth:api')->group(function () {}); 復制代碼

參考文檔

Laravel5.8

轉載于:https://juejin.im/post/5cb7d643518825186d654246

總結

以上是生活随笔為你收集整理的Laravel——Passport OAuth的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。