Безопасность ASP.NET MVC: как проверить, разрешено ли выполнение метода контроллера с разрешениями текущего пользователя - PullRequest
4 голосов
/ 05 мая 2010

С учетом объявления класса контроллера ASP.NET MVC:

public class ItemController : Controller
{
    public ActionResult Index()
    {
       // ...
    }

    public ActionResult Details()
    {
       // ...
    }

    [Authorize(Roles="Admin, Editor")]
    public ActionResult Edit()
    {
       // ...
    } 

    [Authorize(Roles="Admin")]
    public ActionResult Delete()
    {
      // ..
    }
}

Мне нужно отразить список методов в этом классе, которые могут быть вызваны с разрешениями текущего пользователя.

Пожалуйста, поделитесь некоторыми идеями о том, что можно сделать в этом случае.

1 Ответ

3 голосов
/ 05 мая 2010

Хорошо, для нового вопроса подумайте что-то вроде:

new ReflectedControllerDescriptor(typeof(ItemController)).GetCanonicalActions()

может быть использовано для возврата списка всех доступных действий. У меня нет ASP.NET MVC, доступной мне на работе, поэтому я не могу проверить, будет ли возвращаемый ActionDescriptor содержать какой-либо параметр, который сообщает, каким членам разрешено их выполнять.

http://msdn.microsoft.com/en-us/library/system.web.mvc.actiondescriptor_members%28v=VS.90%29.aspx

То есть члены ActionDescriptor, возможно, вы сможете найти там что-нибудь. Я посмотрю сегодня вечером, если смогу разобраться, это меня заинтриговало.


Не существует универсальной системы входа / аутентификации пользователей для всех приложений, поэтому на самом деле невозможно создать «универсальное решение». Вы могли бы создать свои собственные классы входа и авторизации пользователя, которые затем добавляете свои собственные аннотации к методам, но у него будут те же ограничения, что и у системы asp.net mvc, только для вашей системы входа / авторизации (или кто расширяет эту систему).

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