无法在AspNetRoles中返回角色

时间:2016-10-09 10:18:07

标签: asp.net-mvc asp.net-identity identity asp.net-identity-2

我需要返回身份标​​签中的所有角色以创建下拉列表。

    public class ApplicationRoleManager : RoleManager<IdentityRole>
{
    public ApplicationRoleManager(RoleStore<IdentityRole> store)
        : base(store)
    {

    }
    public static ApplicationRoleManager Create(IOwinContext context)
    {
        var Store = new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>());
        // Configure validation logic for usernames
        return new ApplicationRoleManager(Store);
    }
}

我该怎么做?

修改

enter image description here

/ ********************************************** ************************************************** ******* /

1 个答案:

答案 0 :(得分:2)

通过设置ApplicationRoleManager来获取所有角色的过程如下(根据Microsoft提供的身份示例here)。

将以下代码添加到IdentityConfig.cs

public class ApplicationRoleManager : RoleManager<IdentityRole>
{
    public ApplicationRoleManager(IRoleStore<IdentityRole, string> roleStore)
        : base(roleStore)
    {
    }

    public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
    {
        return new ApplicationRoleManager(new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>()));
    }
}

然后在Startup.Auth.cs中初始化RoleManager的每个Owin上下文的单个实例:

app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);

在您想要获得所有角色的控制器中,执行以下操作:

private ApplicationRoleManager _roleManager;
public ApplicationRoleManager RoleManager
{
    get
    {
        return _roleManager ?? HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
    }
    private set
    {
        _roleManager = value;
    }
}

之后,您只需在任何操作方法中使用RoleManager.Roles即可获得所有角色。

这个答案包含了使其工作所需的所有步骤,但如果你仍然不清楚这个过程,请参考上面nuget包的链接。