我已经设置了laravel护照并创建了客户端。当客户端使用it api向我的应用程序发出帖子请求时,他们发送的只是不记名访问令牌和帖子值。
当消费应用程序提交post请求时,我有什么方法可以简单地从bearer token获取客户id呢?
或者,使用应用程序将其客户端 ID 与 post 字段一起发送是否完全安全?
我想这就是我需要的:
$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();