Ваша реализация 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).
Если вы реализовали свой UserStore с помощью интерфейса IUserStore, вам также необходимо реализовать IUserRoleStore.
В этом последнем интерфейсе вы можете найти AddToRoleAsync, GetRolesAsync, IsInRoleAsync, RemoveFromRoleAsync.
Вы также должны реализовать свой RoleStore (IRoleStore).
Если вы хотите прочитать несколько хороших статей на эту тему, я бы посоветовал вам заглянуть в этот блог. Этот парень написал 4 статьи о ASP.NET Identity 2.x:
Часть 1
Часть 2
Часть 3
Часть 4 (то, что вас интересует)
А это еще один парень, который пишет интересные материалы на эту тему.
person
LeftyX
schedule
11.03.2015