2017-05-16 4 views
0

私はasp.netコアを初めて使用していて、ASP.Netコアにカスタムロールを追加する方法を知りたいと思っています。売り手、バイヤーなどのために、私はいくつかの行動にそれらを制限することができます。ASP.Net Coreで新しい役割を追加するにはどうすればよいですか?

私は現在、個々のユーザー認証でデフォルトのASP.Netコアテンプレートを使用しています。

+0

[asp.netコアでロールを作成してユーザーに割り当てる方法](http:// stackoverflow。 com/questions/42471866/how-to-creat-role-in-asp-net-core-and-assign-it-to-user) – SynerCoder

+0

ユーザーロールを管理するためのUIを提供する準備が整っているものを探しているなら、私のクラウドスクリブのコアプロジェクトを見てください。https://github.com/joeaudette/cloudscribe –

答えて

1

私はここでこの質問に何度も答えましたが、発生した場合は記事hereを書くことにしました。しかし、私はもう一度それに答えるでしょう。

は、ここでは、あなたのstartupクラスでCreateRolesメソッドを作成することで簡単に行うことができ

あなたはそれについて移動する方法Wajahat

です。これは、ロールが作成されているかどうかを確認し、そうでない場合はロールを作成します。アプリケーションの起動時にそのようです。

private async Task CreateRoles(IServiceProvider serviceProvider) 
{ 
    //initializing custom roles 
    var RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>(); 
    var UserManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>(); 
    string[] roleNames = { "Admin", "Store-Manager", "Member" }; 
    IdentityResult roleResult; 

    foreach (var roleName in roleNames) 
    { 
     var roleExist = await RoleManager.RoleExistsAsync(roleName); 
     // ensure that the role does not exist 
     if (!roleExist) 
     { 
      //create the roles and seed them to the database: 
      roleResult = await RoleManager.CreateAsync(new IdentityRole(roleName)); 
     } 
    } 

    // find the user with the admin email 
    var _user = await UserManager.FindByEmailAsync("[email protected]"); 

    // check if the user exists 
    if(_user == null) 
    { 
     //Here you could create the super admin who will maintain the web app 
     var poweruser = new ApplicationUser 
     { 
      UserName = "Admin", 
      Email = "[email protected]", 
     }; 
     string adminPassword = "[email protected]$$w0rd"; 

     var createPowerUser = await UserManager.CreateAsync(poweruser, adminPassword); 
     if (createPowerUser.Succeeded) 
     { 
      //here we tie the new user to the role 
      await UserManager.AddToRoleAsync(poweruser, "Admin"); 

     } 
    } 
} 

、その後、あなたは、スタートアップクラスのConfigureメソッドからawait CreateRoles(serviceProvider);メソッドを呼び出すことができます。 ConfigureクラスのパラメータとしてIServiceProviderを指定してください。

いくつかの操作に制限します。あるコントローラやコントローラのアクションにアクセスするロールを簡単に定義することができます。

[Authorize(Roles="Admin")] 
public class ManageController : Controller 
{ 
    //.... 
} 

このようなアクションメソッドでロールベースの認可を使用することもできます。もしあなたが意志

[Authorize(Roles="Admin")] 
public IActionResult Index() 
{ 
/* 
..... 
*/ 
} 

これが正常に動作している間、複数の役割を割り当て、より良い練習のためには、ポリシー・ベースの許可またはロールのチェックを使用することについて読みたいかもしれません。 ASP.NETのコアドキュメントhere、または私が書いたこの記事で見つけることができますhere

関連する問題