Pergunta

Eu adoraria ser capaz de obter alguma forma fortemente tipado de saber qual a ação está em execução.

Para esclarecer im fazendo AOP, onde eu só permitir o acesso a uma determinada acção se o usuário tem direitos para essa ação.

O problema com o uso de uma corda para determinar qual regra para verificar se há, é que, se algum desenvolvedor renomeia uma ação, eu não vou obter um erro de compilação dizendo-me que a minha regra é quebrada.

Todas as ideias ??

Foi útil?

Solução

Desenvolver um atributo que executa seu cheque. Aplicar o atributo, com todas as opções necessárias, para as ações que você deseja proteger. Escrever unidade de testes que verificam que as ações em exist questão e estão decorados com o seu atributo (com as opções apropriadas). Em seu atributo que você não precisa saber que ação está em execução, apenas se o usuário atual passa os testes, conforme configurado por opções do seu atributo.

Eu tenho um par de diferentes atributos que eu derivados de AuthorizeAttribute que fazem exatamente esse tipo de coisa.

 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 )
 {
    ....
 }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top