passport 多表登陆 auth:API 中间件鉴权失败
创建客户端$ php artisan passport:client --password --name='guide-api'
在auth.php
中增加一个providers
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 这是增加的
'guides' => [
'driver' => 'eloquent',
'model' => App\Models\Guide::class,
],
],
创建中间件
class PassportClient
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// 使用 guides providers
config(['auth.guards.api.provider' => 2]);
return $next($request);
}
}
创建路由
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', ['namespace' => 'App\Http\Controllers\Api\V1\GuideWeapp'], function ($api) {
// 登陆 使用了PassportClient中间件
$api->post('socials/{social_type}/authorizations', 'AuthorizationsController@store')->name('api.socials.authorizations.store')->middleware('passport.client');
// 这里auth:api鉴权失败
$api->group(['middleware' => ['auth:api', 'bindings']], function ($api){
// 获取当前认证用户信息
$api->get('socials/me', 'AuthorizationsController@me')->name('api.socials.authorizations.me');
});
});
登陆并获取到token,在oauth_access_tokens
表中也写入了token
/**
* 登录授权获取token.
*
* @param AuthorizationRequest $request
* @param AuthorizationServer $server
* @param ServerRequestInterface $serverRequest
* @return mixed|void
*/
public function store(AuthorizationRequest $request, AuthorizationServer $server, ServerRequestInterface $serverRequest)
{
try {
$response = $server->respondToAccessTokenRequest($serverRequest, new Psr7Response())->withStatus(201);
return $response;
} catch (OAuthServerException $e) {
return $this->response->errorUnauthorized($e->getMessage());
}
}
上面已经成功获取到token,但是访问api/socials/me
时auth:api
鉴权失败? 我怎么如何处理这个问题?
推荐文章: