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,他在这个话题上写了一些有趣的东西。