Sto lavorando a un'applicazione in cui stiamo cercando di mantenere Separation of Concerns il più fortemente possibile. Stiamo scoprendo che la preoccupazione trasversale della sicurezza crea una serie di complicazioni.AOP e applicazione della sicurezza agli elementi dell'interfaccia utente
Tuttavia, sembra che questi possano essere mitigati utilizzando gli attributi e la programmazione orientata agli aspetti.
Lo capisco per quanto riguarda l'applicazione di aspetti al codice del livello dominio, ma cosa succede se si desidera applicarlo agli elementi dell'interfaccia utente? Ad esempio, cosa succede se non desidero visualizzare un pulsante quando un utente non dispone dell'autorizzazione per l'esecuzione di tale funzionalità?
Nella nostra applicazione MVC, a questo punto avremmo dovuto scrivere (pseudo-codice segue):
<% if (user.CanSeeSomeData) { <%=Html.TextBox("MyTextBox") } %>
Ma vorremmo controllare la visualizzazione con gli attributi alla l'AOP, se possibile.
Qualche idea?
Inoltre, se ci sono strumenti di terze parti, open source che potrebbero essere utili, questi suggerimenti sono benvenuti.
grazie per la risposta, graffic. Quindi, stai dicendo che l'approccio dell'attributo è OK, ma dovrebbe essere fatto in Conroller/ViewModel, o stai dicendo che l'istruzione if è il modo per farlo * ["È come dovrebbero essere le viste"] * – jlembke
Inoltre, come realizzeresti questo nel ViewModel? Potrei inserire un attributo su una proprietà ma questo non si traduce in mostrare/nascondere/disabilitare gli elementi del modulo. Stai dicendo che * non dovrei * cercare di nascondere i controlli, ma solo gestire le violazioni di accesso in ViewModel/Controller? – jlembke