在 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)
{
    ....
}

您可以从这里获得一些帮助: