安全地同时使用 ASP.NET Core 的 UserManager 和 IdentityDbContext
Safely use ASP.NET Core's UserManager and IdentityDbContext simultaneously
每当我做任何与身份验证相关的事情时,我都会使用 UserManager
而不是 IdentityDbContext
。我总是避免同时使用两者,因为我不确定它们是如何相互作用的。
现在我发现自己处于需要查询数据库的情况,所以必须使用上下文。
我根据请求注册了我的上下文,我认为 UserManager
在启动时调用 services.AddIdentityCore()
时也是这样注册的。
我担心的是:如果我在一个中执行工作,那么从另一个中使用是否安全,是否存在隐含的竞争条件,基于首先调用“保存”,他们是否共享一个更改跟踪器,等等?
同时使用两者“安全”吗?
我在 UserClaimsPrincipalFactory 的覆盖中使用了两者,没有问题。我调用 UserManager.UpdateAsync() 来保存对用户的更新,并使用注入的上下文来检索与用户授权相关的其他数据。
每当我做任何与身份验证相关的事情时,我都会使用 UserManager
而不是 IdentityDbContext
。我总是避免同时使用两者,因为我不确定它们是如何相互作用的。
现在我发现自己处于需要查询数据库的情况,所以必须使用上下文。
我根据请求注册了我的上下文,我认为 UserManager
在启动时调用 services.AddIdentityCore()
时也是这样注册的。
我担心的是:如果我在一个中执行工作,那么从另一个中使用是否安全,是否存在隐含的竞争条件,基于首先调用“保存”,他们是否共享一个更改跟踪器,等等?
同时使用两者“安全”吗?
我在 UserClaimsPrincipalFactory 的覆盖中使用了两者,没有问题。我调用 UserManager.UpdateAsync() 来保存对用户的更新,并使用注入的上下文来检索与用户授权相关的其他数据。