提问者:小点点

拉拉维尔护照从持有者令牌获取客户端ID


我已经设置了laravel护照并创建了客户端。当客户端使用it api向我的应用程序发出帖子请求时,他们发送的只是不记名访问令牌和帖子值。

当消费应用程序提交post请求时,我有什么方法可以简单地从bearer token获取客户id呢?

或者,使用应用程序将其客户端 ID 与 post 字段一起发送是否完全安全?


共3个答案

匿名用户

我想这就是我需要的:

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

匿名用户

如果您处理授权类型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;
});

匿名用户

如果您使用过护照,您可以使用api保护Auth外观中获取用户ID,如下所示:

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

或者让用户:

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