我想使用在控制器中调用的自定义注册标识方法来自动注册具有相应角色的用户。这是我到目前为止找到的代码:
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
相对应的参数。我什至不知道这是做我想做的事的正确方法,我想我缺少一些基本的东西,请帮忙!
答案 0 :(得分:0)
对于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();
}