ASP.Net MVC 5身份角色已添加到数据库,但User.IsInRole始终返回false

时间:2014-04-07 16:11:59

标签: asp.net-mvc authentication authorization asp.net-mvc-5 identity

我有一个使用新身份模型的ASP.Net MVC 5应用程序。一切看起来都在工作,但是,用户的角色集合始终不包含任何项目,User.IsInRole始终返回false。

我可以使用UserManager.AddToRole(identity, "Admin");

成功向用户添加角色

这会产生:http://imgur.com/vobtgO2

该模型似乎是正确的: http://imgur.com/0csxrZm

我尝试在数据库上下文类中强制执行Lazy Loading,但这没有任何区别。

我是否需要执行任何其他配置步骤才能将角色与用户相关联?我正在使用开箱即用的IdentityRole类,我的标准ApplicationUser类继承了IdentityUser。

任何帮助都会非常感激,因为我已经浪费了太多时间。

2 个答案:

答案 0 :(得分:2)

事实证明,由于我在类的构造函数中将LazyLoadingEnabled设置为true,因此缺少Lazy Loading是一个问题。

需要在onmodelcreating方法中启用延迟加载:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        this.Configuration.LazyLoadingEnabled = true;

感谢所有输入人员。

答案 1 :(得分:0)

您是否使用roleManager.Create(new IdentityRole("Admin")); roleManager.Create(new IdentityRole("NonAdmin"));等内容创建了角色? 使用该代码首次加载应用程序时,最好创建角色。