В настоящее время я использую [Authorize (Roles = ".....")] для защиты своих действий контроллера в моем приложении ASP.NET MVC 1, и это прекрасно работает. Однако в некоторых видах поиска должны быть кнопки, которые направляют эти действия, которые необходимо включить / отключить на основе записи, выбранной в списке поиска, а также привилегий безопасности пользователя, вошедшего в систему.
Поэтому я думаю, что мне нужен класс, обращающийся к таблице БД, который связывает эти целевой контроллер / действия с ролями приложения, чтобы определить состояние этих кнопок. Это, очевидно, приведет к путанице, так как priv нужно будет поддерживать в 2 местах - в таблице классов / БД и в действиях контроллера (плюс, если я хочу изменить доступ к действию, мне придется изменить кодировать и компилировать, а не просто изменить запись в таблице БД).
В идеале я хотел бы расширить функциональность [Authorize], чтобы вместо указания ролей в коде [Authorize] он запрашивал класс безопасности на основе пользователя, контроллера и действия, а затем возвращал логическое разрешение или запрет доступа. Есть ли хорошие статьи по этому поводу - я не могу представить, что это необычная вещь, которую я хочу сделать, но я, кажется, изо всех сил пытаюсь найти что-нибудь о том, как это сделать (может быть, мозг понедельника утром). Я начал делать некоторый код, просматривая статью http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/, и кажется, что все начинается нормально, но я не могу найти «правильный» способ получить вызывающий контроллер и значения действия из httpContext - Я мог бы выдумать немного кода, чтобы извлечь их из URL-адреса запроса, но мне это не кажется правильным, и я бы предпочел сделать это правильно.
Приветствия
MH