2014-09-07 2 views
0

Мне нужно настроить объекты ASP.NET Identity.Настроить идентификатор ASP.NET

У меня есть эти классы:

<!-- language: c# --> 

public class ApplicationUser: IdentityUser<string, ApplicationLogin, ApplicationUserRole, ApplicationClaim> {} 

public class: UserStore<ApplicationUser, ApplicationRole, string, ApplicationLogin, ApplicationUserRole, ApplicationClaim> {} 

public class ApplicationUserManager: UserManager<ApplicationUser> 
{ 
    public ApplicationUserManager(IUserStore<ApplicationUser> store) 
     : base(store) 
    {} 
} 

Как я могу создать экземпляр IUserStore<ApplicationUser> для DI в данном случае?


Я не могу получить мой DbContex из IdentityDbContext из-за использования единицы работы хранилища. Я нашел аналогичный вопрос here.

+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

1

Вам нужно будет создать некоторые другие классы и интерфейсы:

public interface IApplicationUserStore : IUserStore<ApplicationUser, string> 
{ 

} 

public class ApplicationUserStore : 
    UserStore<ApplicationUser, ApplicationRole, Guid, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>, 
    IApplicationUserStore 
{ 
    public ApplicationUserStore() 
     : base(new ApplicationDbContext()) 
    { 

    } 

    public ApplicationUserStore(ApplicationDbContext context) 
     : base(context) 
    { 

    } 
} 

И создать класс ApplicationDbContext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim> 
{ 
    public ApplicationDbContext() 
     : base("AuthenticationConnectionString") 
    { 
    } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
    ... 
} 

то из вашей ApplicationUserManager вы могли бы назвать

var manager = new ApplicationUserManager(new ApplicationUserStore(context.Get<ApplicationDbContext>())); 

И это полный класс ApplicationUserManager, который получает IApplica tionUserStore в конструкторе:

public class ApplicationUserManager : UserManager<ApplicationUser, Guid> 
    { 
     public ApplicationUserManager(IApplicationUserStore store) 
      : base(store) 
     { 
     } 

     public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
     { 
      var manager = new ApplicationUserManager(new ApplicationUserStore(context.Get<ApplicationDbContext>())) { PasswordHasher = new CustomPasswordHasher() }; 

      // Configure validation logic for passwords 
      manager.PasswordValidator = new PasswordValidator 
      { 
       RequiredLength = 6, 
       RequireNonLetterOrDigit = false, 
       RequireDigit = true, 
       RequireLowercase = true, 
       RequireUppercase = false, 
      }; 

      return manager; 
     } 
    } 
Смежные вопросы