网站初始化时创建默认用户/管理员 – 身份

我在asp.net领域非常棒。 所以我的问题可能在互联网的任何地方都得到了答案,但他们都不理解流程创建。 这是个问题。

我正在尝试创建简单的“网站项目”,当该网站启动时,如果该表尚不存在,它应该在数据库内创建所有必要的身份表。 然后我将在表中添加角色,并将一个用户设置为此表的超级管理员。

任何人都可以帮我这个或分享关于这个问题的任何链接。

我假设您正在使用ASP.NET MVC。

您可以使用数据库初始化为数据库设定种子。

public class MyDBInitializer : CreateDatabaseIfNotExists { protected override void Seed(ApplicationDBContext context) { base.Seed(context); } } 

在种子方法上,您可以填充数据库并为应用程序创建默认用户。

 protected override void Seed(ApplicationDBContext context) { // Initialize default identity roles var store = new RoleStore(context); var manager = new RoleManager(store); // RoleTypes is a class containing constant string values for different roles List identityRoles = new List(); identityRoles.Add(new IdentityRole() { Name = RoleTypes.Admin }); identityRoles.Add(new IdentityRole() { Name = RoleTypes.Secretary }); identityRoles.Add(new IdentityRole() { Name = RoleTypes.User }); foreach(IdentityRole role in identityRoles) { manager.Create(role); } // Initialize default user var store = new UserStore(context); var manager = new UserManager(store); ApplicationUser admin = new ApplicationUser(); admin.Email = "admin@admin.com"; admin.UserName = "admin@admin.com"; manager.Create(admin, "1Admin!"); manager.AddToRole(admin.Id, RoleTypes.Admin); // Add code to initialize context tables base.Seed(context); } 

在Global.asax.cs上,您应该注册数据库初始化程序

 protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); Database.SetInitializer(new MyDBInitializer()); } 

请注意,存在不同类型的数据库初始化策略,其行为将取决于您的数据库初始化程序。 请检查上面的链接。