![](/img/trans.png)
[英]How can I get user_id with access token in laravel passport api?
[英]Taking id from token so I can check if the user is the owner of the recource Passport Laravel
我正在使用通行证通过令牌进行oauth身份验证:
Route::middleware('auth:api') ->group (function(){
//my routes
}
但是,在我的更新方法中,我想首先检查经过身份验证的用户是否是资源所有者。 我正在使用Lcobucci \\ JWT \\ Parser来获取用户的ID:
$value = $request->bearerToken();
$id = (new Parser())->parse($value)->getHeader('jti');
但是我不知道将这段代码放在哪里。 在Spring中,我将ID放入中间件中并将其存储在安全上下文中,然后可以从安全上下文的函数中访问它。 如何扩展auth:api中间件及其防护,以便存储用户的ID?
当您将auth:api
中间件放入路由中并通过提供承载令牌进行调用时,您试图做的解析令牌事情就在auth:api
完成。
如果您深入研究源代码,则令牌检查的主要“入口点”位于简单调用Auth::check()
的Authenticate
中间件中。 这将触发您正在使用的身份验证系统上的身份验证用户的检查(在您的情况下为Passport)。 它将解析令牌并检索authd用户。
但是,当您使用auth:api
中间件时,始终可以在控制器中检索登录的用户实例,而无需自己离开令牌。
为此,您有两种方法:
Auth
外观: Auth::user()->id
或直接Auth::id()
$request->user()->id
。 注意:您也可以使用Request
Facade或request()
helper方法来检索请求实例。
无论如何,用户方法都会为您提供当前经过身份验证的用户实例。 然后,您可以获取id属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.