Как правильно настроить Identity Core с DI на net .core 3.1? - PullRequest
3 голосов
/ 29 февраля 2020

Я запустил домашний проект в ASP.NET core 3.1 создан MVC проект и кучу библиотек для работы.

Я также создал:

  • User,

  • Role,

  • RoleManager

  • UserManager

Классы, которые унаследованы от AspNetCore.Identity. Но у меня проблема при включении этих классов в DI container. Каждый раз, когда я получаю это InvalidOpertationException с информацией: Невозможно разрешить службу для типа Microsoft.AspNetCore.Identity.IUserStore при попытке активировать JournalUserManager.

Вот мой пример кода:

`services.AddIdentityCore<JournalUser>(options =>
 {
    options.User.RequireUniqueEmail = true;
    options.Lockout.MaxFailedAccessAttempts = 3;
    options.Password.RequireNonAlphanumeric = false;
    options.Password.RequireUppercase = false;
 })
   .AddRoles<JournalRole>()
   .AddRoleManager<JournalRoleManager>()
   .AddUserManager<JournalUserManager>();`

Есть предложения как это исправить?

1 Ответ

3 голосов
/ 29 февраля 2020

Ознакомьтесь с руководством по настройке пользовательских хранилищ

. В приложении Reconfigure для использования нового поставщика хранилища приведен пример настройки IUserStore и IRoleStore

public void ConfigureServices(IServiceCollection services)
{
    // Add identity types
    services.AddIdentity<ApplicationUser, ApplicationRole>()
        .AddDefaultTokenProviders();

    // Identity Services
    services.AddTransient<IUserStore<ApplicationUser>, CustomUserStore>();
    services.AddTransient<IRoleStore<ApplicationRole>, CustomRoleStore>();
    string connectionString = Configuration.GetConnectionString("DefaultConnection");
    services.AddTransient<SqlConnection>(e => new SqlConnection(connectionString));
    services.AddTransient<DapperUsersTable>();

    // additional configuration
}
...