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 请求认证:移动端应用篇(密码授权令牌)

Laravel 5.4建站06--API 认证系统 Passport

Laravel 通过 Passport 实现 API 请求认证:开放平台篇(客户端凭证令牌)