.NET Core 2.2 API中具有JWT身份验证。当用户创建一个新实体时,我需要获取他的信息(在应用程序中设置的用户名和时区),以便审核该实体。
重点是,我不想将所有这些添加到我的JWT的Claims中(还有一些其他属性)并使其来回传递,并在某些用户首选项更改时保持最新状态。因此,我宁愿只将用户的ID放在Claims上,在收到他的请求后,我便可以查询我的数据库/缓存/任何内容,以获取他的完整信息。
我想做的是创建一个中间件,该中间件将处理请求以获取用户信息并将其作为服务提供(例如UserInfo
),因此我可以在DbContext和就像我可以使用HttpContext
一样使用它:
var ctx = this.GetService<IHttpContextAccessor>().HttpContext;
(我正在使用DbContextPool
,这就是为什么我得到这样的服务并且不注入它的原因。)
我对中间件不是很熟悉,但是这是我的中间件以某种方式使UserInfo
可用的一种方式,因此我可以将其放入DbContext
中,就像我可以使用HttpContext
?