特定のロールに制限したいインデックスがあるMVC Webサイトがあります(今のところ「MyRole」と呼んでいます)。私は最初にこれをしました:
[Authorize(Roles="MyRole")]
public ActionResult Index()
{
return View();
}
ロールをデータベースに手動で追加し、適切な ApplicationId を使用してロールに単純に挿入し、その新しいロールを自分のユーザーと共に UsersInRoles テーブルに追加しました。かなり簡単に思えますが、上記の Authorize は失敗します。だから私は代わりにこれを試しました:
[Authorize]
public ActionResult Index()
{
if (!User.IsInRole("MyRole"))
return Redirect("Error");
return View();
}
Authorize は機能しますが (ログインさせます)、User.IsInRole("MyRole") は false を返します。私は一生、理由を理解することはできません。ユーザーはデータベース内にあり、ユーザーはアプリケーションに割り当てられ、ロールはそのアプリケーションのデータベース内にあり、ユーザーはそのロールに割り当てられます。ユーザーがロールに割り当てられるようにするには、他に何をする必要がありますか?
-シュナー