Какое действие выполняется как строго типизированный объект

StackOverflow https://stackoverflow.com/questions/565242

  •  05-09-2019
  •  | 
  •  

Вопрос

Мне бы хотелось иметь возможность получить какой-нибудь строго типизированный способ узнать, какое действие выполняется.

Чтобы уточнить, я выполняю AOP, где я разрешаю доступ к данному действию только в том случае, если у пользователя есть права на это действие.

Проблема с использованием строки для определения, какое правило проверять, заключается в том, что если какой-либо разработчик переименует действие, я не получу ошибку компиляции, сообщающую мне, что мое правило нарушено.

Есть какие-нибудь идеи??

Это было полезно?

Решение

Разработайте атрибут, который выполняет вашу проверку.Примените атрибут со всеми необходимыми параметрами к действиям, которые вы хотите защитить.Напишите модульные тесты, которые проверяют, что рассматриваемые действия существуют и оформлены вашим атрибутом (с соответствующими параметрами).В вашем атрибуте вам не нужно знать, какое действие выполняется, достаточно знать, проходит ли текущий пользователь тесты, настроенные параметрами вашего атрибута.

У меня есть пара различных атрибутов, которые я получил из AuthorizeAttribute, которые делают именно такие вещи.

 public class RequiresEmailAttribute : AuthorizeAttribute
 {
      ... implements the logic to test whether the current user
      ... has an email address and redirects to error view if no
      ... email address is found
 }

 [RequiresEmail]
 public ActionResult SendEmail( string to )
 {
    ....
 }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top