在 Class 库中创建 UserManager
Create UserManager in Class library
我正在使用 Blazor 和 .NetCore 开发应用程序。
我为角色和用户使用 Microsoft Identity。在Visual Studio生成的基础工程中,使用identity的代码是默认构建的。为了项目的目标,我正在使用这种模式设计:
我需要将身份的 CRUD 移动到“业务 Class 库”。为此,我需要创建一个 UserManager 和 RoleManager,但我不知道如何创建 UserManager(因为构造函数需要 8 个参数)
namespace Business
{
public static class B_Manage
{
public static void CreateUser()
{
using (var IdentityDB = new IDBContext())
{
var roleStore = (IRoleStore<IdentityRole>)new RoleStore<IdentityRole>(IdentityDB);
var roleManager = new RoleManager<IdentityRole>(roleStore, null, null, null, null);
var userStore = new UserStore<IdentityUser>(IdentityDB);
var userManager = new UserManager<IdentityUser>()
}
}
}
}
我在别人的网站上看到了示例代码,但是当我创建一个新实例时,需要其他变量。
public async Task<ActionResult> Index()
{
var context = new ApplicationDbContext(); // DefaultConnection
var store = new UserStore<CustomUser>(context);
var manager = new UserManager<CustomUser>(store);
}
有人知道我可以在 Class 库中创建 UserManager 吗?
您不创建新的 UserManager<T>
或 RoleManager<T>
,相反,您需要通过依赖注入从托管应用程序的服务集合中注入。
要注入 class 的构造函数,您可以使用下面的 UserManager
示例:
public class SomeClass
{
private readonly UserManager<ApplicationUser> _userManager;
public SomeClass(
UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
...
-或-
您将此通过参数传递给您的方法。
public void DoSomething(UserManager<ApplicationUser> userManager)
{
....
}
您可以从这里获得一些帮助:
- Move identity to a class library ASP.Net Core
- https://github.com/dotnet/aspnetcore/issues/2069
我正在使用 Blazor 和 .NetCore 开发应用程序。
我为角色和用户使用 Microsoft Identity。在Visual Studio生成的基础工程中,使用identity的代码是默认构建的。为了项目的目标,我正在使用这种模式设计:
我需要将身份的 CRUD 移动到“业务 Class 库”。为此,我需要创建一个 UserManager 和 RoleManager,但我不知道如何创建 UserManager(因为构造函数需要 8 个参数)
namespace Business
{
public static class B_Manage
{
public static void CreateUser()
{
using (var IdentityDB = new IDBContext())
{
var roleStore = (IRoleStore<IdentityRole>)new RoleStore<IdentityRole>(IdentityDB);
var roleManager = new RoleManager<IdentityRole>(roleStore, null, null, null, null);
var userStore = new UserStore<IdentityUser>(IdentityDB);
var userManager = new UserManager<IdentityUser>()
}
}
}
}
我在别人的网站上看到了示例代码,但是当我创建一个新实例时,需要其他变量。
public async Task<ActionResult> Index()
{
var context = new ApplicationDbContext(); // DefaultConnection
var store = new UserStore<CustomUser>(context);
var manager = new UserManager<CustomUser>(store);
}
有人知道我可以在 Class 库中创建 UserManager 吗?
您不创建新的 UserManager<T>
或 RoleManager<T>
,相反,您需要通过依赖注入从托管应用程序的服务集合中注入。
要注入 class 的构造函数,您可以使用下面的 UserManager
示例:
public class SomeClass
{
private readonly UserManager<ApplicationUser> _userManager;
public SomeClass(
UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}
...
-或-
您将此通过参数传递给您的方法。
public void DoSomething(UserManager<ApplicationUser> userManager)
{
....
}
您可以从这里获得一些帮助:
- Move identity to a class library ASP.Net Core
- https://github.com/dotnet/aspnetcore/issues/2069