我最近开始使用MVC 5和Identity 2.0开发新应用程序,为了使用不同的密码哈希算法,我实现了本指南中详述的自定义标识(https://code.msdn.microsoft.com/ASPNET-45-MVC5-Custom-1a94ab26#content)。
我已经研究了将角色纳入此身份实现的各种方法,但到目前为止还没有找到一种方法使它们能够使用这种新的身份实现。
现在是否有人有关如何向类似的自定义身份提供商添加角色的指南?
非常感谢任何指导。
答案 0 :(得分:2)
您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;
}
}
并将其添加到owin上下文中:
app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
ApplicationRoleManager 将允许您创建角色(CreateAsync
),查找(FindByIdAsync
),删除(DeleteAsync
)。
您的 ApplicationUserManager :
public class ApplicationUserManager : UserManager<ApplicationUser>
{
...
}
允许您将角色与用户关联(AddToRoleAsync
),删除(RemoveFromRoleAsync
)。
如果您使用界面IUserStore
实施了 UserStore ,那么您还需要实施IUserRoleStore
。
在最后一个界面中,您可以找到AddToRoleAsync
,GetRolesAsync
,IsInRoleAsync
,RemoveFromRoleAsync
。
您还必须实施RoleStore(IRoleStore
)。
如果你想阅读一些关于这个主题的好文章,我建议你看看这个blog。 到目前为止,这家伙写了4篇关于 ASP.NET Identity 2.x :
的文章 Part 1
Part 2
Part 3
Part 4(你感兴趣的那个)
这是另一个guy在这个主题上写下有趣的东西。