我想知道是否可以添加用户和密码,而不必在表单中注册它们。我有一个现有的数据库,里面有一些用户和密码,我想把它转移到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>();