.NET Core 2.0 Решение проблем с удостоверением личности
Я настроил ключ пользователя IdentityRole как int вместо строки. и вот как я пытался добавить его в коллекцию сервисов.
Прежде всего мой пользователь приложения наследует от identityUser
public class ApplicationUser : IdentityUser<int>......
тогда в моей сервисной коллекции:
services.AddIdentity<ApplicationUser, IdentityRole<int>>(options => {
// Password settings
options.Password.RequireDigit = true;
options.Password.RequiredLength = 8;.......`
В базовом контроллере у меня есть следующий конструктор:
public BaseApiController(RoleManager<IdentityRole> roleManager, UserManager<ApplicationUser> userManager, IConfiguration configuration, ILogger<BaseApiController> logger) : base(logger)
{
_roleManager = roleManager;
_userManager = userManager;
_configuration = configuration;
_jsonSettings = new JsonSerializerSettings() { Formatting = Formatting.Indented };
}
Затем я использую базовый контроллер на одном из моих контроллеров mvc в виде:
public class RegisterController : BaseApiController
{
private readonly IAccountService _accountService;
public RegisterController(RoleManager<IdentityRole> roleManager, UserManager<ApplicationUser> userManager, IConfiguration configuration, ILogger<RegisterController> logger, IAccountService accountService) : base(roleManager, userManager, configuration, logger)
{
_accountService = accountService;
}
теперь, когда я бегу, используя swagger, я получаю следующую ошибку:
Произошло необработанное исключение при обработке запроса. Не удалось разрешить службу для типа Microsoft.AspNetCore.Identnty.RoleManager. При попытке активировать Myprog.Areas.Account.Controllers.RegisterController.
1 ответ
Базовый контроллер должен был иметь назначение в вызове, а затем выполнить его во всех реализациях:
public BaseApiController(RoleManager<IdentityRole<int>> roleManager, UserManager<ApplicationUser> userManager, IConfiguration configuration, ILogger<BaseApiController> logger) : base(logger)