在ASP.NET/Blazor项目中迁移到身份验证数据库时,是否可以创建一些预注册用户



我想知道是否可以添加用户和密码,而不必在表单中注册它们。我有一个现有的数据库,里面有一些用户和密码,我想把它转移到aspNetUser

我将这些默认表迁移到了本地数据库中,我不知道如何在这些表中设置大约10个只有密码的现有用户。

我只想";粘贴";在用户和密码中。

我使用的是启用个人身份验证的Blazor服务器模板。

是的,您可以这样做,但可以手动作为数据库的种子
你可以这样做:

public class AppIdentityDbContextSeed
{
public static async Task SeedAsync(UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager)
{
await roleManager.CreateAsync(new IdentityRole("Administrators"));
var defaultUser = new IdentityUser { UserName = "your username", Email = "your email" };
await userManager.CreateAsync(defaultUser, "your password");
string adminUserName = "Your admin name";
var adminUser = new IdentityUser { UserName = adminUserName, Email = "your admin email" };
await userManager.CreateAsync(adminUser, "your admin password");
adminUser = await userManager.FindByNameAsync(adminUserName);
await userManager.AddToRoleAsync(adminUser, "Administrators");
}
}

然后您可以在program类中使用SeedAsync方法,如下所示:

public class Program
{
public static async Task Main(string[] args)
{
var host = CreateHostBuilder(args)
.Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{

var userManager = services.GetRequiredService<UserManager<IdentityUser>>();
var roleManager = services.GetRequiredService<RoleManager<IdentityRole>>();
await AppIdentityDbContextSeed.SeedAsync(userManager, roleManager);
}
catch (Exception ex)
{
//exception handling
}
}
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}

最后检查Startup.cs,应该如下:

services.AddDefaultIdentity<IdentityUser>().AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();

相关内容

  • 没有找到相关文章

最新更新