Laravel 经过 Passport 实现 API 请求认证:沙箱测试篇(私人访问令牌)

私人访问令牌这种受权方式比较特殊,不须要受权码,也不须要用户输入登陆凭证,而是用户给本身颁发访问令牌。这种受权方式在用户测试、体验平台提供的认证 API 接口时很是方便,好比微信开放平台和支付宝开发平台都有沙箱测试模式,在这种测试模式下获取受权令牌的方式其实就是经过私人访问令牌来实现的。php

在后端系统注册测试应用

在开放平台 blog 中注册对应的测试应用 testapp,在 blog 项目根目录下运行如下命令来注册 testappweb

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 中定义一个新的路由,用于测试获取访问令牌:api

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 数据表中找到,私人访问令牌默认是长期有效的。app

拿到这个令牌以后咱们就能够经过它访问认证接口了。测试

访问认证接口

以 Postman 为例,把上面获取到的令牌拷贝到 Bearer Token 头里面,访问 blog.test/api/user 接口,就能够获取到当前认证用户的信息了。code

相关文章
相关标签/搜索