Проверка разрешений в контроллере и в поле зрения - PullRequest
2 голосов
/ 11 декабря 2011

Я хочу создать разрешения для некоторых действий, таких как создание или обновление информации (но не для отображения).Для этого я добавляю атрибуты перед всеми необходимыми методами, например

[Permissions(Permissions.Admin)]
public ActionResult Create()
{
   //...
}

Кроме того, я не хотел бы оставлять ссылки активными на странице индекса.Поэтому я должен добавить несколько проверок в представлениях.

@if (checking...)
{
    @Html.ActionLink("Create New", "Create")  

}

Чем больше проверок я добавляю, тем скучнее и больше вещей я должен помнить.Как это сделать правильно?

Ответы [ 3 ]

3 голосов
/ 12 декабря 2011

Вы можете создать HtmlHelper для этого.

Что-то вроде @Html.ActionLinkUsingPermissions("Create New", "Create",Permissions.Admin)

HtmlHelper будет решать, отображать ли ссылку в зависимости от текущих разрешений пользователей.

2 голосов
/ 11 декабря 2011

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

Общий интерфейс может быть затем выведен в частичные представления.

Рекомендуется максимально обезопасить свое представление от бизнес-логики.

1 голос
/ 11 декабря 2011

Вы также можете создать две разные модели вида. Один для чтения / записи и один только для чтения. Затем с помощью функции Просмотр шаблонов вы можете в одном представлении автоматически выбрать нужный шаблон для отображения с помощью этой строки:

@Html.DisplayForModel()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...