【发布时间】:2022-06-26 08:43:28
【问题描述】:
新的 .NET 6 Blazor 模板取消了 Startup.cs 并将所有内容压缩为更扁平的结构。
我之前使用Startup.cs 的Configure 方法注入UserManager 并为管理员用户播种。
我怎样才能在新结构中做同样的事情?
我还没有找到从任何地方获取UserManager 的方法。
【问题讨论】:
标签: asp.net-identity asp.net-core-6.0
新的 .NET 6 Blazor 模板取消了 Startup.cs 并将所有内容压缩为更扁平的结构。
我之前使用Startup.cs 的Configure 方法注入UserManager 并为管理员用户播种。
我怎样才能在新结构中做同样的事情?
我还没有找到从任何地方获取UserManager 的方法。
【问题讨论】:
标签: asp.net-identity asp.net-core-6.0
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 ...
}
}
【讨论】:
使用 asp.net core 3.1 创建您的项目,然后将其转换为 6.0
【讨论】: