将Identity 2.0角色添加到自定义标识

时间:2015-03-10 10:24:51

标签: c# asp.net-mvc-5 asp.net-identity-2 user-roles

我最近开始使用MVC 5和Identity 2.0开发新应用程序,为了使用不同的密码哈希算法,我实现了本指南中详述的自定义标识(https://code.msdn.microsoft.com/ASPNET-45-MVC5-Custom-1a94ab26#content)。

我已经研究了将角色纳入此身份实现的各种方法,但到目前为止还没有找到一种方法使它们能够使用这种新的身份实现。

现在是否有人有关如何向类似的自定义身份提供商添加角色的指南?

非常感谢任何指导。

1 个答案:

答案 0 :(得分:2)

IdentityUser的实施(ApplicationUser:如果您使用标准模板)将提供将用户与角色相关联的方法:AddToRoleAsyncAddToRolesAsyncGetRolesAsyncRemoveFromRolesAsync

如果您想管理角色,我怀疑您必须添加RoleManager<IdentityRole>

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

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

            return appRoleManager;
        }
    }

并将其添加到owin上下文中:

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

ApplicationRoleManager 将允许您创建角色(CreateAsync),查找(FindByIdAsync),删除(DeleteAsync)。

您的 ApplicationUserManager

public class ApplicationUserManager : UserManager<ApplicationUser>
{
  ...
}

允许您将角色与用户关联(AddToRoleAsync),删除(RemoveFromRoleAsync)。

如果您使用界面IUserStore实施了 UserStore ,那么您还需要实施IUserRoleStore

在最后一个界面中,您可以找到AddToRoleAsyncGetRolesAsyncIsInRoleAsyncRemoveFromRoleAsync

您还必须实施RoleStore(IRoleStore)。

如果你想阅读一些关于这个主题的好文章,我建议你看看这个blog。 到目前为止,这家伙写了4篇关于 ASP.NET Identity 2.x

的文章

Part 1
Part 2
Part 3
Part 4(你感兴趣的那个)

这是另一个guy在这个主题上写下有趣的东西。