ユーザー オブジェクトをコンテキストに配置する標準の認証方法を使用している限り、それほど難しくはありません。ビューで、Html.RenderPartial と適切なコントローラーを使用して、このように目的を達成します...
/ホーム/インデックス ビュー:
<div id="menu">
<ul>
<li>Page 1</li>
<li>Page 2</li>
<% Html.RenderPartial("/Home/AdminView"); %>
</ul>
</div>
/ホーム/管理者ビュー:
<li>Admin 1</li>
<li>Admin 2</li>
/共有/空のビュー:
<!--Empty view for non-viewable admin stuff-->
/ホームコントローラー:
public ActionResult AdminView()
{
//Check if user is admin
//This should be your own logic... I usually have a few static methods that the
//Users or User object has to assist with checking
if (Models.User.IsAdmin(HttpContext.User.Identity.Name))
{
return View();
}
else
{
return View("Empty");
}
}
それはうまくいくはずです...それは私のやり方です。それが間違っている場合は、うまくいけば、より賢い誰かがより良い答えを投稿して、私たちが学ぶことができます
編集:
別のことを考えただけです...ユーザーオブジェクトがIPrincipalを実装している場合、それをコンテキストから抽出し、ユーザータイプにキャストして、ユーザークラスに情報を入れることができます...
こんな感じ
class User : IPrincipal
{
//Implement IPrincipal stuff
public string Role { get; set; }
}
次に、管理ビューのロジックは次のようになります。
public ActionResult AdminView()
{
//Check if user is admin
//This should be your own logic... I usually have a few static methods that the
//Users or User object has to assist with checking
if ( ((Model.User)HttpContext.User).Role =="Admin" )
{
return View();
}
else
{
return View("Empty");
}
}