Ваше осуществление 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
).
Если вы хотите прочитать некоторые хорошие статьи по этой теме, я бы предложил вам посмотреть на это blog. Этот парень написал 4 статьи до сих пор о ASP.NET Идентичность 2.x:
Part 1
Part 2
Part 3
Part 4 (тот, что вы заинтересованы в)
И это другой guy, который пишет интересные материалы по этой теме.
Этот учебник довольно бесполезен, учитывая, что все, что вам нужно сделать, это реализовать этот интерфейс на объекте и передать его UserManager. https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.ipasswordhasher%28v=vs.108%29.aspx – Shoe
спасибо за совет Теперь я использую собственный хэш-хэш пароля, реализующий IPasswordHasher – CryoFusion87