2015-03-10 2 views
1

Недавно я начал работу над новым приложением с использованием MVC 5 и Identity 2.0, чтобы использовать другой алгоритм хэширования пароля. Я реализовал пользовательский идентификатор, указанный в этом руководстве (https://code.msdn.microsoft.com/ASPNET-45-MVC5-Custom-1a94ab26#content).Добавление ролей Identity 2.0 в пользовательский идентификатор

Я рассмотрел различные способы включения ролей в эту реализацию идентичности, но до сих пор не нашел способа заставить их работать с этой новой реализацией идентичности.

Кто-нибудь теперь рассказал о том, как добавить роли в аналогичный заказчик?

Любое руководство будет очень оценено.

+0

Этот учебник довольно бесполезен, учитывая, что все, что вам нужно сделать, это реализовать этот интерфейс на объекте и передать его UserManager. https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.ipasswordhasher%28v=vs.108%29.aspx – Shoe

+0

спасибо за совет Теперь я использую собственный хэш-хэш пароля, реализующий IPasswordHasher – CryoFusion87

ответ

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).

Если вы реализовали ваш UserStore с помощью интерфейса IUserStore, то вам нужно реализовать IUserRoleStore, а также.

В этом последнем интерфейсе вы найдете AddToRoleAsync, GetRolesAsync, IsInRoleAsync, RemoveFromRoleAsync.

Вы также должны реализовать свой RoleStore (IRoleStore).

Если вы хотите прочитать некоторые хорошие статьи по этой теме, я бы предложил вам посмотреть на это blog. Этот парень написал 4 статьи до сих пор о ASP.NET Идентичность 2.x:

Part 1
Part 2
Part 3
Part 4 (тот, что вы заинтересованы в)

И это другой guy, который пишет интересные материалы по этой теме.

Смежные вопросы