我已经设置了laravel护照并创建了客户。当客户使用api向我的应用程序发出发布请求时,他们发送的只是承载访问令牌以及发布值。
当他们仅从不记名令牌提交发布请求时,有什么方法可以获取正在使用的应用程序的客户端ID。
使用方应用程序发送其客户ID和发布字段完全安全吗?
答案 0 :(得分:0)
如果您使用过passport
,则可以使用Auth
从api 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;
});