Как вызвать метод регистра пользовательских идентификаторов из контроллера в .net core 2.1 mvc - PullRequest
0 голосов
/ 11 ноября 2018

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

public class RegisterUsers 
{
private readonly UserManager<ApplicationUser> _userManager;
    public RegisterUsers(UserManager<ApplicationUser> userManager)
    {
        _userManager = userManager;
    }
    public async Task SystmRegisterUsers(string uname, string sysid, string Email)
    {
         var newuser = new ApplicationUser
        {
            UserName = uname,
            Email = Email,
            SystemuserID = sysid
        };
        string UserPassword = PasswordGenerator.Generate(6, 3, true, true, true, true);
        //var _user = await UserManager.FindByEmailAsync(Configuration.GetSection("UserSettings")["UserEmail"]);
        var createParentUser = await _userManager.CreateAsync(newuser, UserPassword);
        if (createParentUser.Succeeded)
        {
            //here we tie the new user to the "Admin" role 
            await _userManager.AddToRoleAsync(newuser, "Parent");
        }

    }
}

И я хочу вызвать метод SystmRegisterUsers вот так в контроллере

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create([Bind("fullname,id,email,...")]MyModel parent)
        {
           if (ModelState.IsValid)
           {
              //create new records
                _context.Add(parent);
                await _context.SaveChangesAsync();
             // and i want to call the method here to create identity users using the data entered:
                 var instance = new RegisterUsers();
                await instance.SystmRegisterUsers(parent.FullName, parent.Parentid, parent.Parentid);
           }
                 return View(parent);
    }

И он говорит, что мне не хватает аргумента, который соответствует userManager. Я даже не знаю, является ли это правильным способом делать то, что я хочу сделать, я думаю, что упускаю какую-то основную вещь, пожалуйста, помогите!

1 Ответ

0 голосов
/ 13 ноября 2018

Для RegisterUsers необходимо UserManager<ApplicationUser> userManager, для разрешения RegisterUsers из Dependency Injection вы можете выполнить следующие шаги:

  • Регистрация RegisterUsers в Startup.cs

            public void ConfigureServices(IServiceCollection services)
        {
            //your rest code
    
            services.AddScoped<RegisterUsers>();
        }
    
  • Инициализация RegisterUsers по Dependency Injection

        public class HomeController : Controller
    {
        private readonly RegisterUsers _registerUsers;
        public HomeController(RegisterUsers registerUsers)
        {
            _registerUsers = registerUsers;
        }            
    
        public async Task<IActionResult> Index()
        {
            await _registerUsers.SystmRegisterUsers("a1", "b1", "c1");
            return View();
        }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...