根据您的描述,您希望使用 UserManager 创建一个服务,然后使用它来管理用户。如果是这种情况,您可以参考以下示例代码:
public interface IUserManagerService:IDisposable
{
Task<IdentityResult> CreateAsync(User user, string password);
}
public class UserManagerService : IUserManagerService
{
//request the UserManger service and call the relate methods.
private readonly UserManager<IdentityUser> usermanager;
public UserManagerService(UserManager<IdentityUser> userManager)
{
usermanager = userManager;
}
public async Task<IdentityResult> CreateAsync(User user, string password)
{
var identityuser = new IdentityUser { UserName = user.UserName, Email = user.Email };
var result = await usermanager.CreateAsync(identityuser, password);
return result;
}
public void Dispose()
{
Console.WriteLine("- IUserManagerService was disposed!");
}
}
用户模型:
public class User
{
public string UserName { get; set; }
public string Email { get; set; }
}
然后,使用具体类型 UserManagerService 注册 IUserManagerService 服务:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDatabaseDeveloperPageExceptionFilter();
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddControllersWithViews();
services.AddScoped<IUserManagerService, UserManagerService>();
然后,在 MVC 控制器中,请求 IUserManagerService 服务,并调用其方法创建用户:
public class HomeController : Controller
{
private readonly IUserManagerService userManagerService;
public HomeController(IUserManagerService userManager)
{
userManagerService = userManager;
}
public IActionResult Index()
{
var newuser = new User() { UserName = "Tom", Email = "tom121@hotmail.com" };
var password = "Password123!";
var result = userManagerService.CreateAsync(newuser, password);
if (result.Result.Succeeded)
{
//do some thing
}
return View();
}
结果如下:
更多详细信息,请参考Dependency injection in ASP.NET Core