Laravel Passport客户端凭证授权令牌中如何获取客户端详情?
解决Laravel Passport客户端凭证模式下获取客户端详情的问题
在Client Credentials Grant模式下,$request->user()返回null是正常现象——这种认证模式本身不关联具体用户,仅验证客户端身份。要获取客户端详情,可通过以下方式实现:
直接调用
$request->client()方法
启用client中间件并验证通过后,Passport会将客户端实例绑定到请求对象上,直接调用$request->client()即可拿到包含ID、名称、密钥等信息的客户端模型实例。通过AccessToken解析客户端信息
若需要更底层的操作,可手动从请求中提取AccessToken并解析关联的客户端:$token = $request->bearerToken(); $accessToken = \Laravel\Passport\Token::findToken($token); if ($accessToken) { $client = $accessToken->client; // 此处可使用$client获取客户端详情 }注意:适配MongoDB时,需确保Passport的
Token和Client模型继承MongoDB版本的Eloquent基类(如使用jenssegers/mongodb扩展时的Jenssegers\Mongodb\Eloquent\Model)。确认中间件配置正确
务必确保路由使用的是client中间件而非auth:api——auth:api针对用户认证,client中间件才是客户端凭证模式的专用验证中间件:Route::get('/api/your-endpoint', [YourController::class, 'yourMethod'])->middleware('client');
内容的提问来源于stack exchange,提问作者Lalith Kumar
相关产品推荐
相关产品推荐

