7

たぶん私はこれに間違った方法でアプローチしていて、アクションフィルターですべてを行う必要があります。その場合は正しい方向に向けてください!

ASP.NET MVCアプリケーションをセットアップして、1つのHomeControllerIndexアクションが次のように2つの異なるタイプのコンテンツを配信するようにします。

if(Request.IsAuthenticated)
  return View("IndexRegistered");
else
  return View("IndexGuest");

これは問題ありませんが、管理者メンバーが独自のページを取得できるように3つに分割したいとします...

if(Request.IsAuthenticated)
{
  if( /* user is a member of administrators */)
    return View("IndexAdministrator");
  else
    return View("IndexCustomer");
}
else
  return View("IndexGuest");

誰かがこのパズルの欠けている部分について私に教えてもらえますか?

4

2 に答える 2

23

RolesAuthorizeActionFilterのプロパティを使用します

[Authorize(Roles="Administrators,Moderators")]
public ActionResult SomeAction(){

}

または、次のUser.IsInRole()方法 を使用します。

if(User.IsInRole("Administrator")) { ... }
于 2010-01-14T15:48:47.443 に答える
3

デフォルトの MVC プロジェクト テンプレートですぐに使用できる認証プロバイダーを見ると、そこに独自のロール サポートを追加してセッションで追跡するのは簡単なので、上記のコードは次のようになります。

if(Request.IsAuthenticated)
{
  if(Session["Role"] == "Administrator")
    return View("IndexAdministrator");
  else
    return View("IndexCustomer");
}
else
  return View("IndexGuest");

次に、次のような可能性を開きます。

if(Request.IsAuthenticated)
  return View("Index" + Session["Role"]);
else
  return View("IndexGuest");
于 2013-07-20T12:49:23.673 に答える