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

本文关键字:网站 初始化 身份 默认 用户 管理员 创建 | 更新日期: 2023-09-27 18:09:04

我是asp.net领域的新手。所以我的问题可能在网上的任何地方都能找到答案但我都不理解流的创造。问题来了

我试图创建简单的"网站项目",当这个网站是起来,它应该创建所有必要的身份表内的数据库,如果表还不存在。然后将role添加到表中,并将一个用户设置为super admin。

有没有人可以帮助我关于这个问题或分享任何链接。

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

我假设你正在使用ASP。净MVC。

你可以使用Database Initialization来创建你的数据库。

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

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

protected override void Seed(ApplicationDBContext context)
{
    // Initialize default identity roles
    var store = new RoleStore<IdentityRole>(context);
    var manager = new RoleManager<IdentityRole>(store);               
    // RoleTypes is a class containing constant string values for different roles
    List<IdentityRole> identityRoles = new List<IdentityRole>();
    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<ApplicationUser>(context);
    var manager = new UserManager<ApplicationUser>(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());
}

请注意,有不同类型的数据库初始化策略,其行为将取决于您的数据库初始化器。请查看上面的链接