0

私は認証用のIDを使用して新しいASP.NETコアMVCプロジェクトを開始しています。 デフォルトのスーパーユーザーをaspデータベースに追加したいので、新しいユーザーを追加することができますが、その方法はわかりません。デフォルトのスーパーユーザーでシードASP.NETコア1.1データベース

まず、ユーザーの認証/承認とアプリケーションの残りの部分で同じデータベースを使用するか、別のデータベースを使用するかどうかはわかりません。

次に、「aspデータベース」にデフォルトのスーパーユーザーを割り当てる方法を知っておく必要があります。

this私はデータベースにアクセスする方法を知っているが、私はまた、コンテキストの代わりにマネージャを使用してスーパーユーザーをデータベースに追加する "userManager"インスタンスを手に入れたい。

私は、スタートアップクラスでこのコードを持っている:

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(); 

     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
     } 

     app.UseStaticFiles(); 
     app.UseIdentity(); 

     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 

     Seed(app); 
    } 

    public void Seed(IApplicationBuilder app) 
    { 
     using (var context = app.ApplicationServices.GetRequiredService<ApplicationDbContext>()) 
     { 
      //... perform other seed operations 
     } 
    } 

答えて

0

を[OK]を、ここで私が管理者ユーザーを追加するために、それを実装している方法です。私はクレームベースの認可を使用しています。

初期化子クラスを作成します。

public interface IDbInitializer 
{ 
    void Initialize(); 
} 

(...) 

public class DbInitializer : IDbInitializer 
{ 
    private readonly ApplicationDbContext _context; 
    private readonly UserManager<ApplicationUser> _userManager; 
    private readonly RoleManager<IdentityRole> _roleManager; 

    public DbInitializer(
     ApplicationDbContext context, 
     UserManager<ApplicationUser> userManager, 
     RoleManager<IdentityRole> roleManager) 
    { 
     _context = context; 
     _userManager = userManager; 
     _roleManager = roleManager; 
    } 

    //This example just creates an Administrator role and one Admin users 
    public async void Initialize() 
    { 
     //create database schema if none exists 
     _context.Database.EnsureCreated(); 

     //Create the default Admin account 
     string password = "password"; 
     ApplicationUser user = new ApplicationUser { 
      UserName = "Admin", 
      Email = "[email protected]", 
      EmailConfirmed = true    
     };    
     user.Claims.Add(new IdentityUserClaim<string> { ClaimType = ClaimTypes.Role, ClaimValue = "Admin" }); 
     var result = await _userManager.CreateAsync(user, password);    
    } 
} 

そしてstartup.csで、ConfigureService方法でこのサービスを追加します。

services.AddScoped<IDbInitializer, DbInitializer>(); 

そして最後に、このように構成する方法を変更します。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IDbInitializer dbInitializer) 

を呼び出して、Initializeメソッドの呼び出しを追加します。

dbInitializer.Initialize(); 

DIが残りを処理します。

私が参考にした完全なコードはここにあります。ロールベース認可を使用します: https://gist.github.com/mombrea/9a49716841254ab1d2dabd49144ec092

関連する問題