Советы по безопасности MVC3 - PullRequest
5 голосов
/ 15 марта 2011

Я использую AspNetSqlMembershipProvider и создал свои страницы для предоставления. Теперь, когда у меня есть эта работа, я задаюсь вопросом о том, как лучше всего использовать безопасность на всем сайте. Для контроллеров я могу использовать [Авторизация], но куда мне идти дальше? Я имею в виду, я просто загромождаю представления с Roles.IsUserInRole, и где еще мне нужно поставить в проверках. Есть хороший пример сайтов о том, как с этим бороться?

Ответы [ 2 ]

7 голосов
/ 15 марта 2011

Нет, вы не должны загромождать ваши представления Roles.IsUserInRole, это не обязанность представления проверять роли, это задание фильтра / авторизации для заполнения модели представления так, чтобы у вас было только:

@if (Model.ShouldDisplaySomeSection)
{
    ... // some section
} else {
   ... // not authorized
}

Также обратите внимание, что если вы украсили действие контроллера стандартным атрибутом [Authorize], и у пользователя нет достаточных ролей, это действие может никогда не быть выполнено, и представление никогда не попадет.

Лично я нахожу Код шоссе разработчика в качестве чрезвычайно полезного контрольного списка безопасности, даже если он не ограничен MVC.

3 голосов
/ 15 марта 2011

Я создал решение, в котором я получил атрибут Authorize, а в своем собственном атрибуте я ввел массив param[] типа enum с именем UserRoles, так что я пропускаю магические строки.

Тогда для загромождения взглядов. Ну, я думаю, вы должны спросить себя, когда вы собираетесь написать IsUserInRole в представлении, действительно ли вы должны написать это там. Я думаю, вы должны постараться сохранить как можно более чистые виды и постараться как можно больше разбирать в ViewModel. И если вы не можете этого сделать, рассмотрите HTML Helper.

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