ASP.NET MVC 3 — Как эффективно ограничить области?

#asp.net #asp.net-mvc #security #asp.net-mvc-3

#asp.net #asp.net-mvc #Безопасность #asp.net-mvc-3

Вопрос:

У меня есть ASP.NET Сайт MVC 3 с панелью администратора (не так ли? 🙂 — я использовал свое собственное решение для очень защищенной системы входа в систему.

Теперь для каждого представления в контроллере администратора мне нужно проверить, что пользователь зарегистрирован и имеет надлежащую авторизацию, поэтому каждый раз я запускаю одни и те же методы проверки и авторизации для каждого представления отдельно.

Как я мог бы выполнить одинаковые проверки для всех запросов к определенному контроллеру? (Я имею в виду, исправьте все проверки только один раз и в одном месте)

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

Спасибо!

Ответ №1:

Используйте атрибут на контроллере. Либо стандартный AuthorizeAttribute (см. Это), либо напишите свой собственный.

Ответ №2:

То, что вы ищете, — это атрибуты фильтра действий. По сути, это атрибут, который вы можете разместить на контроллере, который позволяет перехватывать вызовы каждого метода действия в контроллере и, следовательно, идеально подходит для обеспечения безопасности, поскольку вы можете отклонять / принимать запросы: http://msdn.microsoft.com/en-us/library/system.web.mvc.actionfilterattribute.aspx

Ответ №3:

Если вы хотите ограничить весь контроллер вместо отдельных действий, вы можете разместить атрибут [Авторизовать] следующим образом:

 [Authorize]        
public class PageController : Controller
{ ... }