.ASP。MVC IUserRoleStore<> 根本没有被调用



我已经为我的Web应用程序实现了自定义用户存储。到目前为止,一切都很好。现在,我想扩展商店类,以支持角色。我实现了以下接口:

IUserStore<UserViewModel>, IUserLockoutStore<UserViewModel, string>, IUserPasswordStore<UserViewModel, string>, IUserTwoFactorStore<UserViewModel, string>, IUserRoleStore<UserViewModel, string>, IRoleStore<RoleModel, string>

并在Owin AppBuilder上注册了服务:

var ctx = UnityMvcActivator.Context.Container;
app.CreatePerOwinContext(() => ctx.Resolve<WebUserManager>());
app.CreatePerOwinContext(() => ctx.Resolve<RoleManager>());
app.CreatePerOwinContext(() => ctx.Resolve<WebApplicationUserStore>());

如果我返回控制器并致电User.IsInRole(Constants.Roles.COMPANY_OWNER),则不会打电话给商店以获取用户的角色。我想有某种缺少的链接,但找不到。我还用SupportsUserRole属性明确设置为True实现了UserManager<UserViewModel, string>,这完全没有区别。

User.IsInRole不检查您的数据库,而只检查当前的用户cookie。它将使您的角色存储在cookie中,但是这些角色可能与您在数据库中的角色不同。如果用户角色更改以来,由于上次曲奇被刷新以来,差异可能会出现。

如果您需要在数据库中检查角色,请使用UserManager.IsInRoleAsync(MSDN)

相关内容

  • 没有找到相关文章