私はasp.netコアを初めて使用していて、ASP.Netコアにカスタムロールを追加する方法を知りたいと思っています。売り手、バイヤーなどのために、私はいくつかの行動にそれらを制限することができます。ASP.Net Coreで新しい役割を追加するにはどうすればよいですか?
私は現在、個々のユーザー認証でデフォルトのASP.Netコアテンプレートを使用しています。
私はasp.netコアを初めて使用していて、ASP.Netコアにカスタムロールを追加する方法を知りたいと思っています。売り手、バイヤーなどのために、私はいくつかの行動にそれらを制限することができます。ASP.Net Coreで新しい役割を追加するにはどうすればよいですか?
私は現在、個々のユーザー認証でデフォルトのASP.Netコアテンプレートを使用しています。
私はここでこの質問に何度も答えましたが、発生した場合は記事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
[asp.netコアでロールを作成してユーザーに割り当てる方法](http:// stackoverflow。 com/questions/42471866/how-to-creat-role-in-asp-net-core-and-assign-it-to-user) – SynerCoder
ユーザーロールを管理するためのUIを提供する準備が整っているものを探しているなら、私のクラウドスクリブのコアプロジェクトを見てください。https://github.com/joeaudette/cloudscribe –