2016-09-28 76 views
2

我很擅長於asp.net領域。所以我的問題也許可以在互聯網的任何地方得到答案,但他們都不瞭解流程的創建。這是問題。當網站初始化時創建默認用戶/管理員 - 身份

我試圖創建簡單的'網站項目',當這個網站啓動時,如果表格不存在,它應該在數據庫中創建所有必要的標識表。然後,我將角色添加到表中,並將一個用戶設置爲超級管理員。

任何人都可以幫助我解決這個問題或分享任何關於這個問題的鏈接。

+0

你使用的是實體框架嗎? –

+0

我只是在創建項目時使用默認框架。因此,已經有登錄,引導等 – saf21

+0

[使用ASP.NET Idenity創建默認用戶帳戶]的可能重複(http://stackoverflow.com/questions/19615441/create-a-default-user-account-using- asp-net-idenity) – vivek

回答

11

我假設你正在使用ASP.NET MVC。

您可以使用Database Initialization來播種您的數據庫。

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

在種子方法上,您可以填充數據庫併爲您的應用程序創建一個默認用戶。

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 = "[email protected]"; 
    admin.UserName = "[email protected]"; 

    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()); 
} 

注意,有不同類型的數據庫初始化策略,其行爲將取決於你的數據庫初始化。檢查上面的鏈接。

+0

我沒有爲此使用MVC。我可以使用此代碼而無需MVC? – saf21

+0

@ saf21我以爲你使用MVC,它通常與模板一起使用。是的,只要你使用Entity-Framework,你就可以。 –

+0

好的謝謝。我會嘗試你的建議。 – saf21

相關問題