使用 Compoer 包安装 Passport
composer require laravel/passport
Passport 的 服务提供器 注册了自己的数据库迁移脚本目录, 所以你应该在安装软件包完成后迁移你自己的数据库
php artisan migrate
其次这个命令将会创建一个用于生成安全访问令牌的加密秘钥
php artisan passport:install
在模型中添加已检查已认证用户的令牌和权限范围,并指定Auth认证:
use Laravel\Passport\HasApiTokens;
use HasFactory,HasApiTokens;
use Illuminate\Foundation\Auth\User;
在 config 中的 auth.php 进行修改操作
guards 的 ‘driver’ 参数的值设置为 ‘passport’。此调整会让你的应用程序使用 Passport 的 ‘TokenGuard’ 鉴权 API 接口请求
根据 provider 中的名称在下方可以进行创建并进行修改
并将 model 执行自己刚才所需认证的模型
Token 生命周期设置
默认情况下,Passport 会发行生命周期长达一年的令牌
如果那你想要配置更长或者更短周期的秘钥
你可以使用方法 tokensExpireIn,refreshTokensExpireIn
以及 personalAccessTokensExpireIn
这些方法需要在应用类 App\Providers\AuthServiceProvider 的 boot 方法中调用:
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
Passport::tokensExpireIn(now()->addDays(15));
Passport::refreshTokensExpireIn(now()->addDays(30));
Passport::personalAccessTokensExpireIn(now()->addMonths(6));
}
个人访问令牌生成
use App\Models\User;
$user = User::find(1);
// 创建没有作用域的令牌...
$token = $user->createToken('Token Name')->accessToken;
// 创建有作用域的令牌...
$token = $user->createToken('My Token', ['place-orders'])->accessToken;
中间件调用认证
我们只需要在需要有效访问令牌的任何路由上指定
auth:api
中间件
传递访问令牌
当调用 Passport 保护下的路由时,接入的 API 应用需要将访问令牌作为
Bearer
令牌放在请求头Authorization 中
。例如,使用 Guzzle HTTP 库时:
use Illuminate\Support\Facades\Http;
$response = Http::withHeaders([
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$accessToken,
])->get('https://passport-app.com/api/user');
return $response->json();