我想知道是否可以添加用戶和密碼而無需使用表單進行注冊。我有一個包含一些用戶和密碼的現有資料庫,我想將它傳輸到aspNetUser.
我將這些默認表遷移到本地資料庫中,但我不明白如何在這些表中僅使用密碼設定大約 10 個現有用戶。
我只想“粘貼”用戶和密碼。
我正在使用啟用個人身份驗證的 Blazor 服務器模板。
uj5u.com熱心網友回復:
是的,您可以這樣做,但手動作為資料庫的種子。
你可以這樣做:
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");
}
}
然后你可以SeedAsync在你的program類中使用方法,如下所示:
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>();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/366417.html
