Laravel 通过 Passport 实现 API 请求认证:沙箱测试篇(私人访问令牌)
Posted 小伍
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 通过 Passport 实现 API 请求认证:沙箱测试篇(私人访问令牌)相关的知识,希望对你有一定的参考价值。
私人访问令牌这种授权方式比较特殊,不需要授权码,也不需要用户输入登录凭证,而是用户给自己颁发访问令牌。这种授权方式在用户测试、体验平台提供的认证 API 接口时非常方便,比如微信开放平台和支付宝开发平台都有沙箱测试模式,在这种测试模式下获取授权令牌的方式其实就是通过私人访问令牌来实现的。
在后端系统注册测试应用
在开放平台 blog
中注册对应的测试应用 testapp
,在 blog
项目根目录下运行以下命令来注册 testapp
:
php artisan passport:client --personal
> testapp
# 显示结果
CLIENT_ID=14
CLIENT_SECRET=HImtGXC1CdG2LvhUpdp3y81IjuyrP0rLUPP8gisg
获取访问令牌
修改模型类:
use Illuminate\\Notifications\\Notifiable;
use Illuminate\\Foundation\\Auth\\User as Authenticatable;
use Laravel\\Passport\\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
...
在 routes/web.php
中定义一个新的路由,用于测试获取访问令牌:
Route::get(\'auth/personal\', \'Auth\\LoginController@personal\');
在控制器 LoginController
编写对应的方法 personal
:
public function personal()
{
$user = User::where(\'name\', \'测试用户\')->first();
$token = $user->createToken(\'Users\')->accessToken;
dd($token);
}
访问 http://blog.test/auth/personal
就可以获取到该用户的访问令牌了。生成的令牌记录可以在 oauth_access_tokens
数据表中找到,私人访问令牌默认是长期有效的。
拿到这个令牌之后我们就可以通过它访问认证接口了。
访问认证接口
以 Postman 为例,把上面获取到的令牌拷贝到 Bearer Token 头里面,访问 blog.test/api/user
接口,就可以获取到当前认证用户的信息了。
以上是关于Laravel 通过 Passport 实现 API 请求认证:沙箱测试篇(私人访问令牌)的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 通过 Passport 实现 API 请求认证:基于 Cookie 的同域名应用篇
每天一点点之laravel框架 - Laravel5.6 + Passport实现Api接口认证
Laravel 通过 Passport 实现 API 请求认证:沙箱测试篇(私人访问令牌)
Laravel 通过 Passport 实现 API 请求认证:移动端应用篇(密码授权令牌)