2016-09-28 4 views
2

私はasp.netエリアで非常にnoobです。ですから、私の質問はインターネットのどこでも答えられるかもしれませんが、どちらも私はフローの作成を理解していません。ここに質問があります。ウェブサイトの初期化時にデフォルトのユーザー/管理者を作成する - ID

私はこのサイトが立ち上がったときに単純な「ウェブサイトプロジェクト」を作成しようとしていますが、テーブルがまだ存在しない場合はデータベース内に必要なIDテーブルを作成する必要があります。それから私はテーブルにロールを追加し、スーパー管理者としてこのテーブルに1人のユーザーを設定します。

この問題に関して私は誰でも助けてくれますか、この質問に関するリンクを教えてください。

+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

関連する問題