ASP.NET MVC безопасность и отображение контента
От: Аноним  
Дата: 21.03.12 10:46
Оценка:
Подскажите, как лучше в зависимости от прав пользователей отображать или не отображать определенный контент на странице?
asp.net mvc безопасность
Re: ASP.NET MVC безопасность и отображение контента
От: 11molniev  
Дата: 21.03.12 14:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите, как лучше в зависимости от прав пользователей отображать или не отображать определенный контент на странице?


А чем вам не подходит обычный:

@if (Session["auth"] == "yes")
{
            <br /><br /><text>Добро пожаловать, </text> @Session["name"];<br /><br />
}
else
{
    using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { id = "flogin" }))
    {
                <p>@ViewBag.logonerror</p>
                <p>Логин:</p>
....
    }

}


И в том же духе.
Re: ASP.NET MVC безопасность и отображение контента
От: RushDevion Россия  
Дата: 21.03.12 16:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите, как лучше в зависимости от прав пользователей отображать или не отображать определенный контент на странице?


Вариант "в лоб" — передаешь пользователя во все модели (можно завести базовую модель и ActionFilter, который ее будет заполнять), в коде View
проверяешь принадлежность пользователя роли и в зависимости от этого рендеришь.

Другой вариант.
Вынести все юзеро-зависимые контролы в отдельный контроллер
class UIPartsController : Controller 
{
   [VisibleFor(Roles="Admins")]
   public ActionResult AdminSideBar()
   {
      return View();
   }

   [VisibleFor(Roles="Admins")]
   public ActionResult AdminTopMenu()
   {
      return View();
   }  
}

//Из View
<%= Html.Action("AdminSideBar", "UIParts") %>
<%= Html.Action("AdminTopMenu", "UIParts")


VisibleFor- это ActionFilter, который проверяет принадлежит ли пользователь роли, и если да, то разрешает отрисовку, а если нет — то отрисовывает пустой контент. Код мне писать лениво — погугли если что.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.