【发布时间】:2018-07-25 14:12:27
【问题描述】:
我目前正在尝试在 ASP.Net Core 2.1 中使用自己的 UserManager 制作自己的 AccountController。
UserManager 应该在数据库中管理与用户相关的过程,例如验证、注册、密码更改等,我希望它在 AccountController 构造函数中作为参数传递。我已经用services.AddDbContext<CustomDB>(...) 配置了存储
我无法弄清楚的问题是我应该如何注入 UserManager(它的生命周期应该是什么 - Singleton、Transient、Scoped)。我不想在任何情况下使用身份(这就是我创建新身份的原因)。换句话说,我正在寻找 services.AddIdentity() 的替代品,以便正确注入我的 UserManager。
AccountControler.cs:
public class AccountController : Controller
{
private readonly IUserManager _userManager;
public AccountController(IUserManager userManager)
{
_userManager = userManager;
}
...
}
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IUserManager, UserManager>();
//or
services.AddTransient<IUserManager, UserManager>();
//or
services.AddScoped<IUserManager, UserManager>();
}
【问题讨论】:
-
当打算重新发明轮子时,看看当前的轮子是如何构建的会有所帮助。幸运的是源代码可用。 github.com/aspnet/Identity/blob/… 他们似乎将大部分内容都添加为范围。
标签: c# dependency-injection .net-core identity asp.net-core-identity