Проектирование системы безопасности в приложении MVC - PullRequest
0 голосов
/ 24 апреля 2011

Какой подход к дизайну можно использовать, уже существует или новый для внедрения системы безопасности в веб-приложении MVC?

Возможно, есть шаблоны, лучшие практики, например, на некоторых популярных языках, например Java, .Net или что-то еще? На каком уровне лучше его реализовать: модель или контроллер или что-то между ними?

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

У меня есть приложение MVC. Мне нужна гибкая система прав доступа. У меня есть и иерархия категорий и сущностей в категориях. Некоторые пользователи могут редактировать / просматривать / добавлять / удалять одни из множества категорий, другие пользователи - другие категории. Также требуется, чтобы в зависимости от роли пользователя некоторые поля модели не извлекались из БД (должен быть возвращен ноль) Администраторы должны иметь возможность назначать разные права доступа.

1 Ответ

1 голос
/ 24 апреля 2011

Вы должны использовать встроенные провайдеры .Net. По умолчанию новый шаблон проекта Visual Studio Internet Application MVC 3 предоставит вам базовый код для входа. Нажав на кнопку «Управление» вашего сайта в Visual Studio, вы получите веб-интерфейс для управления пользователями и ролями. Создайте своих пользователей / роли, затем определите [Authorize (Roles = "Admin, Users")] в определении класса вашего контроллера или в определениях вашего метода. НЕ определяйте доступ к URL-адресам, как это было сделано в приложениях веб-формы Asp.Net, поскольку существует несколько URL-адресов, которые можно сопоставить одному месту. Вместо этого используйте атрибут Authorize.

Также проверьте мой ответ здесь: Какие функции мне нужно иметь, прежде чем я открою приложение ASP.Net в Интернете?

Кроме того, убедитесь, что вы используете Html.AntoForgeryToken в ваших представлениях и [ValidateAntiForgeryToken] в ваших методах контроллера [HttpPost] (т.е. любые методы, которые вы отправляете обратно)

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