Laravel Passport从承载令牌获取客户端ID

时间:2019-07-17 08:28:32

标签: laravel laravel-passport bearer-token

我已经设置了laravel护照并创建了客户。当客户使用api向我的应用程序发出发布请求时,他们发送的只是承载访问令牌以及发布值。

当他们仅从不记名令牌提交发布请求时,有什么方法可以获取正在使用的应用程序的客户端ID。

使用方应用程序发送其客户ID和发布字段完全安全吗?

3 个答案:

答案 0 :(得分:0)

如果您使用过passport,则可以使用Authapi guard门面获取用户ID,如下所示:

$user_id = Auth::guard('api')->id();

或获取用户:

$user = Auth::guard('api')->user();

答案 1 :(得分:0)

我认为这就是我所需要的:

$request->user()->token()->client

答案 2 :(得分:0)

如果您处理grant type client_credentials,则可以考虑以下解决方案:

Route::get('/get-client-cred', function (Request $request) {
    $bearerToken = $request->bearerToken();

    $tokenId = (new \Lcobucci\JWT\Parser())->parse($bearerToken)->getHeader('jti');

    return \Laravel\Passport\Token::find($tokenId)->client;
})->middleware('client_credentials');

相反,如果您要使用个人访问令牌,则可以按以下方式检索客户端:

Route::middleware('auth:api')->get('/get-client', function (Request $request) {
    return $request->user()->token()->client;
});