添加标识2.0角色定义标识(Adding Identity 2.0 Roles to custom

2019-10-22 05:41发布

我最近在使用MVC 5和身份2.0新的应用程序开始工作时,为了使用不同的密码散列算法我实现了这个指南中详细介绍的自定义标识( https://code.msdn.microsoft.com/ASPNET-45- MVC5 -自定义- 1a94ab26#内容 )。

我已经看过结合角色为这个身份实施的各种方式,但到目前为止还没有发现让他们与这个新的身份执行工作的方式。

现在有没有人对如何去添加角色到一个类似的自定义身份提供指导?

任何指导,将是非常赞赏。

Answer 1:

你的实现的IdentityUserApplicationUser :如果您正在使用标准模板)将提供方法与角色的用户联系起来: 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 )。

如果您使用的界面来实现你的UserStore IUserStore ,那么你就需要实现IUserRoleStore为好。

在这最后的界面,你可以找到AddToRoleAsyncGetRolesAsyncIsInRoleAsyncRemoveFromRoleAsync

你要实现你的Rolestore的( IRoleStore )为好。

如果你想阅读有关此主题的一些好文章,我建议你看看这个博客 。 这家伙写了4篇文章至今约ASP.NET身份2.X:

第1部分
第2部分
第3部分
第4部分 (一个你感兴趣的)

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



文章来源: Adding Identity 2.0 Roles to custom Identity