在中间件中获取用户信息并将其注入

时间:2019-02-26 15:00:54

标签: .net-core asp.net-core-middleware

.NET Core 2.2 API中具有JWT身份验证。当用户创建一个新实体时,我需要获取他的信息(在应用程序中设置的用户名和时区),以便审核该实体。

重点是,我不想将所有这些添加到我的JWT的Claims中(还有一些其他属性)并使其来回传递,并在某些用户首选项更改时保持最新状态。因此,我宁愿只将用户的ID放在Claims上,在收到他的请求后,我便可以查询我的数据库/缓存/任何内容,以获取他的完整信息。

我想做的是创建一个中间件,该中间件将处理请求以获取用户信息并将其作为服务提供(例如UserInfo),因此我可以在DbContext和就像我可以使用HttpContext一样使用它:

var ctx = this.GetService<IHttpContextAccessor>().HttpContext;

(我正在使用DbContextPool,这就是为什么我得到这样的服务并且不注入它的原因。)

我对中间件不是很熟悉,但是这是我的中间件以某种方式使UserInfo可用的一种方式,因此我可以将其放入DbContext中,就像我可以使用HttpContext

0 个答案:

没有答案