Domanda

Mi piacerebbe essere in grado di ottenere qualche modo fortemente tipizzata di sapere quale azione è in esecuzione.

Per chiarire sto facendo AOP dove mi permettono solo l'accesso a una determinata azione se l'utente dispone dei diritti per l'azione.

Il problema con l'utilizzo di una stringa per determinare quale regola per verificare, è che se qualche sviluppatore rinomina un'azione, io non otterrete un errore di compilazione che mi diceva che la mia regola è rotto.

Tutte le idee ??

È stato utile?

Soluzione

Sviluppare un attributo che effettua l'assegno. Applicare l'attributo, con tutte le opzioni necessarie, per le azioni che si desidera proteggere. Scrivere unit test che verificano che siano soddisfatte le azioni in questione e sono decorate con l'attributo (con le opzioni corrette). Nel suo attributo non è necessario sapere quale azione è in esecuzione, solo se l'utente corrente supera i test come configurato dalle opzioni del tuo attributo.

Ho un paio di diversi attributi che ho derivato da AuthorizeAttribute che fanno esattamente questo genere di cose.

 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 )
 {
    ....
 }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top