安装
composer require laravel/passport
运行迁移
php artisan migrate
创建访问令牌
- [个人访问] 客户端和 [密码授权] 客户端
php artisan passport:install
- 单独创建 密码授权 客户端
php artisan passport:client --password
- 单独创建 个人访问 客户端
php artisan passport:client --client
模型中使用
在模型中加入 HasApiTokens Trait
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
}
生成 Passport 生成访问令牌所需的秘钥(大白话:每生成一个令牌都要使用到它)
生成的秘钥一般情况不应放在版本控制中,默认生成的文件存放在 storage 目录下
php artisan passport:keys
令牌的有限期配置
在 AuthServiceProvider 中配置
public function boot()
{
$this->registerPolicies();
Passport::routes();
// 配置 令牌 失效时间
Passport::tokensExpireIn(now()->addDays(15));
// 配置 刷新令牌 失效时间
Passport::refreshTokensExpireIn(now()->addDays(30));
// 配置 个人访问令牌 失效时间
Passport::personalAccessTokensExpireIn(now()->addMonths(6));
}
密码授权方式获取访问令牌
http = new GuzzleHttp\Client;
$response = $http->post('http://your-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => 'taylor@laravel.com',
'password' => 'my-password',
'scope' => '',
],
]);
return json_decode((string) $response->getBody(), true);
自定义登录用户名
在对应的 用户(如 User、Admin) 模型中进行设置
<?php
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
/**
* 通过给定的username获取用户实例。
*
* @param string $username
* @return \App\User
*/
public function findForPassport($username)
{
return $this->where('username', $username)->first();
}
}
来源:CSDN
作者:raytol
链接:https://blog.csdn.net/z_ruitao/article/details/103602236