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

Cry*_*n87 1 c# user-roles asp.net-mvc-5 asp.net-identity-2

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

我已经研究了将角色合并到这个身份实现中的各种方法,但到目前为止还没有找到一种方法让它们与这个新的身份实现一起工作。

现在有没有人指导如何向类似的自定义身份提供者添加角色?

任何指导将不胜感激。

Lef*_*tyX 5

您的IdentityUser( ApplicationUser: 如果您使用标准模板) 的实现将提供将用户与角色关联的方法:AddToRoleAsync, AddToRolesAsync, GetRolesAsync, RemoveFromRolesAsync

如果你想管理角色,正如我怀疑的那样,你必须添加一个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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
Run Code Online (Sandbox Code Playgroud)

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

而你的ApplicationUserManager

public class ApplicationUserManager : UserManager<ApplicationUser>
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

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

如果你已经使用 interface实现了你的UserStoreIUserStore,那么你也需要实现IUserRoleStore

在最后一个界面中,您可以找到AddToRoleAsync, GetRolesAsync, IsInRoleAsync, RemoveFromRoleAsync

您还必须实现您的 RoleStore ( IRoleStore)。

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

第 1
部分 第 2
部分 第 3
部分 第 4 部分(您感兴趣的那个)

这是另一个家伙谁的话题写有趣的东西。