配置Passport
1.首先使用composer安装passport
composer require laravel/passport
2.注册服务提供者
进入config/app.php
中,将下面行添加到providers
数组中
/*
* Package Service Providers...
*/
Laravel\Passport\PassportServiceProvider::class,
3.在App\User
模型中的use
后面添加HasApiTokens
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
}
4.在AuthServiceProvider
的boot
方法中调用
// 配置passport路由
Passport::routes();
// 或者使用下面这行给URI添加前辍
//Passport::routes(null,['prefix'=>'api/oauth']);
// token的有效期时长:2小时
Passport::tokensExpireIn(Carbon::now()->addHour(2));
// refresh token的有效期时长:7天
Passport::refreshTokensExpireIn(Carbon::now()->addDay(7));
5.将config/auth.php
的配置文件的guards
/api
/driver
修改为passport
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
6.在服务器中执行数据填充
php artisan migrate
7.生成密钥
php artisan passport:install
执行上述命令会生成类似的密钥
Personal access client created successfully.
Client ID: 1
Client Secret: Fo6GS5UyNuCIeZtBhIUzA9W99sonUoZNo26Zi67t
Password grant client created successfully.
Client ID: 2
Client Secret: kCvv28qy25rIw5IYvAwpIHNQvBMnH6FElrzxqvqP
简单的配置就些完成。
测试上述配置
打开Postman或者类似的工具
方法为
POST
链接为http://你的域名/oauth/token,(假如你使用了URI的前辍,则要在你的URI前加上你自定义的那个前辍)
在表单数据中添加以下项
key | value |
---|---|
client_id | 这里使用的是生成密钥里的clientid值 |
client_secret | 这个是上面ID对应的secret |
username | users表里用于登录的用户名,默认为邮箱,除非你修改过默认值 |
password | 用户登录对应的密码 |
grant_type | password(oauth2有多种类型,我这里使用密码验证类型测试) |
下面附一个演示的数据,不要照抄,只作参考
key | value |
---|---|
client_id | 2 |
client_secret | kCvv28qy25rIw5IYvAwpIHNQvBMnH6FElrzxqvqP |
username | aaa@test.com |
password | 123456 |
grant_type | password |
填好上面内容后,点Send
,服务器返回一个json数据就表示Passport配置成功了
{
"token_type": "Bearer",
"expires_in": 7200,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImUxNGUyZDFmNjUwYzJiMzgwYWVhZjVjNzI5NWFhNjI4ZjM4MjRmOTJhYzNhMmFiY2VkZmQyYmI2OWQ0ZWQ0NjFlOGUwZTI4Njk2NWIzN2ZmIn0.eyJhdWQiOiIyIiwianRpIjoiZTE0ZTJkMWY2NTBjMmIzODBhZWFmNWM3Mjk1YWE2MjhmMzgyNGY5MmFjM2EyYWJjZWRmZDJiYjY5ZDRlZDQ2MWU4ZTBlMjg2OTY1YjM3ZmYiLCJpYXQiOjE1MTAzMzIwNDksIm5iZiI6MTUxMDMzMjA0OSwiZXhwIjoxNTEwMzM5MjQ5LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.czFKBMcqXWhv6JXD_1bhAn2h0cZ1v4KOZWP8c2UOQ3_Y0-a0w-63Qa4jGOCU01dyB5_9e6eEJeaNpDkxN-iezlJbQ37gMjg_x4GbT-Zy1XuYSfqtRQPd3IO3jnnEtFvVLdcaqG4a5z5I9QEKtSjP8UYFV-gPv4Y-vMg29xPga0cIT9bxHnyTWvfjmUfNw_S6pZ2QAnr4jRJSgGgMksNKeo2qRgmpxOYD5LSPO-ZLYY0QhB6TuPZDmO_1s6L7rMQN4p3rlv36E3eIPw8AuK1aXPy5c2_iN4fzdkKKtsHhm6dl5MjnbomKLbVCnYaqWNOSz5ru2zztnUysBi6J_s4qwW89w0DQahl4sLx1qXx90JHdi057d6L4_AqTbFvBtRY_e5IyKNfG1Q3iZS_8ZMRP2TAEsnCiHO3Mv-RRRzunUAE3nzy-6Uu30yj01_dgowLmcuj6RLElsCfOgDAGmLlHdXzDXn-ECzhZEVSuwRqLYqoDiw95WzOSKteemvsWmUqnoLyaXKu_uAjhLb6eKVSdOIBLFb1z-3XQjIx2FhTGJxDhZShDQ9V3Dx_XdiJO6gsdgBsuJyaxLv-SDrU7SQ3LmZxn854DCYXTblUBXyUfbRtu5CGyI2kaV9DyPMqxrAPEYLmTL6WG1J0foTNAOOwWx6nEuDnq18oVALojqsMaNfM",
"refresh_token": "def50200344953b3f39ad35917ff6981ae428f3b48705899e6218149701d7ee3cd419c8297961603444f8ea9174154baa6a04740ee8d2e58403999c92e567f0c5ebdde0ebde6ebc965bc91a1d5c8d012cb7f0b159226e187d5500458c41a6feb4fc9908f9ab9b43f5c9eb82d8e0507fd3db92e6253990acbf9edb6f1b8b3e857c559e23b015af0331ace28d63df4d25e62a8538565e52f38579f6a57582f3446fa2855ff86c7a9ee401671fd70f3a151eb97d1b83abd09612d8d1ccc93c35b64585a051fef2fc971286f135ed5f7e66858c169a2f05192c85458557c5dd2d21b015b43a3d409914cc9e4f719abb8e9376d88d4cee295a25a32bed45f60ddba6f3679980a40604ac563601442e549557cc3d0c2e9b8c722b414b87875180472d66675b1902124a7502123eb2feee87131243eb06c1ea72c11c8ff5b7c65f35544a9e35bde1fe74c99ec6cb1d16a4ec68fec046f3637737ef18f5998b9368c5190f7"
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。