В блоге, на который вы ссылаетесь, автор заявляет, что
Одним из способов решения этой проблемы является использование защиты на основе атрибутов, как показано в этом посте. Но тогда вам придется украшать ваши действия атрибутом безопасности, что не очень хорошая идея.
Я думаю, что это идеальный способ, и он поддерживается фреймворком. Это даст вам хорошую декларативную реализацию. Проверьте AuthorizeAttribute в System.Web.Mvc. Это позволит вам сделать что-то вроде этого:
[Authorize(Roles="Admin, Editor")]
public ActionResult Delete(int id){
(...)
}
Так как действие Delete изменяет состояние вашей системы, я бы также добавил атрибут AcceptVerbs следующим образом:
[AcceptVerbs(HttpVerbs.Post)]
[Authorize(Roles="Admin, Editor")]
public ActionResult Delete(int id){
(...)
}
Это гарантирует, что действие не будет принимать запросы GET.