1 回答

TA贡献1818条经验 获得超7个赞
您必须编写自己的种子逻辑来播种默认用户和角色。查看 Jeff Fritz 的CoreWiki 存储库以获取示例。
这是相关的部分。请注意如何多次调用它而不必担心创建多个帐户——这很重要,因为每次运行应用程序时都会调用它。
public static async Task Seed(UserManager<CoreWikiUser> userManager, RoleManager<IdentityRole> roleManager)
{
var administratorsRole = "Administrator";
var defaultAdminUsername = "admin@corewiki.com";
var defaultAdminPassword = "Admin@123";
var adminRoleExists = await roleManager.RoleExistsAsync(administratorsRole);
if (!adminRoleExists)
{
var role = new IdentityRole(administratorsRole)
{
Name = administratorsRole
};
var roleResult = await roleManager.CreateAsync(role);
}
// If there are no users who are currently an admin, then create a default admin user
var anyAdminUsers = await userManager.GetUsersInRoleAsync(administratorsRole);
if (!anyAdminUsers.Any())
{
var defaultAdminUserExists = await userManager.FindByEmailAsync(defaultAdminUsername);
if (defaultAdminUserExists == null)
{
var defaultAdminUser = new CoreWikiUser
{
UserName = defaultAdminUsername,
Email = defaultAdminUsername
};
var userResult = await userManager.CreateAsync(defaultAdminUser, defaultAdminPassword);
if (userResult.Succeeded)
{
var result = await userManager.AddToRoleAsync(defaultAdminUser, administratorsRole);
}
}
}
}
然后,您可以从 Startup 调用它,ConfigureServices()也可以在Main()运行虚拟主机之前直接在您的网络主机中调用它,如果您的种子方法是async.
如果传递了命令行参数,另一种方法是在 Main() 中运行它。例如。dotnet run seed.
- 1 回答
- 0 关注
- 162 浏览
添加回答
举报