【问题标题】:How do I get Identity UserManager in .NET 6.0如何在 .NET 6.0 中获取 Identity UserManager
【发布时间】:2022-06-26 08:43:28
【问题描述】:

新的 .NET 6 Blazor 模板取消了 Startup.cs 并将所有内容压缩为更扁平的结构。

我之前使用Startup.csConfigure 方法注入UserManager 并为管理员用户播种。

我怎样才能在新结构中做同样的事情?

我还没有找到从任何地方获取UserManager 的方法。

【问题讨论】:

    标签: asp.net-identity asp.net-core-6.0


    【解决方案1】:

    Program.cs 中的以下更改允许 DBInitializer 像以前一样被调用:

    var scopeFactory = app.Services.GetRequiredService<IServiceScopeFactory>();
    using (var scope = scopeFactory.CreateScope())
    {
        var roleManager = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
        var userManager = scope.ServiceProvider.GetRequiredService<UserManager<IdentityUser>>();
        ApplicationDbInitializer.Seed(userManager, roleManager);
    }
    

    初始化器供参考:

    public static class ApplicationDbInitializer
    {
        public static void Seed(UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager)
        {
            bool adminRoleReady = false;
            bool adminUserReady = false;
    
            if (roleManager.FindByNameAsync("Admin").Result == null)
            {
                var role = new IdentityRole()
                {
                    Name = "Admin",
                };
    
                var res = roleManager.CreateAsync(role).Result;
    
                adminRoleReady = res.Succeeded;
            }
    
            // ... more ...
        }
    }
    

    【讨论】:

      【解决方案2】:

      使用 asp.net core 3.1 创建您的项目,然后将其转换为 6.0

      【讨论】:

        猜你喜欢
        • 2014-10-31
        • 2016-11-09
        • 2017-10-29
        • 1970-01-01
        • 1970-01-01
        • 2022-12-23
        • 2021-12-14
        • 1970-01-01
        • 2019-07-21
        相关资源
        最近更新 更多