Пока вы используете стандартный метод аутентификации, который помещает объект пользователя в контекст, он не должен быть слишком сложным.По вашему мнению, используйте Html.RenderPartial и соответствующий контроллер, чтобы выполнить то, что вам нужно, как это ...
/ Home / Index View:
<div id="menu">
<ul>
<li>Page 1</li>
<li>Page 2</li>
<% Html.RenderPartial("/Home/AdminView"); %>
</ul>
</div>
/ Home / Admin View:
<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");
}
}