繁体   English   中英

从令牌中获取ID,以便我可以检查用户是否是资源护照Laravel的所有者

[英]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中间件时,始终可以在控制器中检索登录的用户实例,而无需自己离开令牌。

为此,您有两种方法:

  1. 通过Auth外观: Auth::user()->id或直接Auth::id()
  2. 通过请求实例: $request->user()->id

注意:您也可以使用Request Facade或request() helper方法来检索请求实例。

无论如何,用户方法都会为您提供当前经过身份验证的用户实例。 然后,您可以获取id属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM