API 通常使用令牌(token)進行認證並且在請求之間不維護會話(Session)狀態
認證步驟如下:
1.首先通過 Composer 包管理器安裝 Passport, 並在config/app.php 的 providers 數組中注冊passport
composer require laravel/passport
2.創建用於存放客戶端和訪問令牌的數據表
php artisan migrate:fresh
3.運行 passport:install
命令,該命令將會創建生成安全訪問令牌(token)所需的加密鍵
php artisan passport:install --force
4.把app目錄下的User.php可以移動到自己指定的路徑下,這是我的項目目錄 app/Models/Account/User.php
5.在app/Provides/AuthServiceProvider 的 boot 方法中調用 Passport::route 方法, 該方法將會頒發訪問令牌, 撤銷訪問令牌, 客戶端以及私人訪問令牌注冊必要的路由
6.在config/auth.php中, 設置api認證 guard 的driver 選項為 passport 這將告知應用在認證輸入的 api 請求時使用 passport 的 TokenGuard, 同時指定User.php的路徑
7.由於官方文檔中沒有提及如何用自定義的用戶名進行授權, 查看源碼, 在laravel\passport\src\Bridge\UserRepository.php 的 getUserEntityByUserCredentials() 函數中會看到這段代碼:
8.這時需要在app\Models\Account\User.php中添加這段代碼, 完成自定義授權用戶名
9.授權流程完成之后, 創建登錄 Controller
10.構建認證路由
11.測試, 用postman調用登錄接口, 看到如下結果則api認證成功