1、passport中有 客户端密码授权、个人授权。
如果是要用到第三方授权登录,可以使用 个人授权 Personal Token
- 密码授权通过请求 /oauth/token 来获取 access_token
- 个人授权可通过
$user->createToken ('name_string')->token
来获取
2、attempt 方法
Passport 的 guard 并未实现 attempt 方法,所有当使用 Auth::attempt($credentials)
会报错
3、多表用户认证,得到的 access_token 可以通过其他表认证?
解决
首先在 app/Kernel
中的 $routeMiddleware
加入
'scopes' => \Laravel\Passport\Http\Middleware\CheckScopes::class,
'scope' => \Laravel\Passport\Http\Middleware\CheckForAnyScope::class,
在 AuthServiceProvider
中的 boot()
方法定义授权作用域(Scope)
public function boot()
{
$this->registerPolicies();
Passport::routes();
// 定义作用域
Passport::tokensCan([
'admin-api' => 'admin api',
'user-api' => 'user api',
]);
}
在获取 token 时,指定对应的 作用域(Scope)
$user->createToken('Personal Access Token', ['user-api'])->token;
在认证路由中添加中间件
Route::group([
'middleware' => ['auth:api', 'scope:user-api']
], function () {
Route::post('userInfo', 'Api\AuthController@userInfo');
});
相应文档地址:查看