Domanda

Ok, quindi sto cercando un po 'di guida per l'architettura, il mio team ha la possibilità di ri-lanciare determinate decisioni con una nuova funzionalità che stiamo costruendo e volevo vedere cosa pensasse SO :-) Naturalmente ci sono alcune cose che non stiamo cambiando, quindi la soluzione dovrebbe adattarsi a questo modello. Vale a dire, che abbiamo un'applicazione ASP.NET, che utilizza i servizi Web per consentire agli utenti di eseguire azioni sul sistema.

Il problema si presenta perché, come con molti sistemi, utenti diversi hanno bisogno di accedere a funzioni diverse. Alcuni ruoli hanno accesso al pulsante Y, e altri hanno accesso al pulsante Y e B, mentre un altro ha ancora accesso a B. La maggior parte delle volte che vedo questo, gli sviluppatori hanno appena fatto un miscuglio di istruzioni if ??da affrontare lo stato dell'interfaccia utente. La mia paura è che rimanga deselezionata, questo diventerà un pasticcio non mantenibile, perché oltre a mettere la logica di autorizzazione nella GUI, deve essere inserito nei servizi Web (che vengono chiamati tramite Ajax) per garantire che solo gli utenti autorizzati chiamino determinati metodi .

quindi la mia domanda è: come può un sistema essere progettato per ridurre le istruzioni casuali ad-hoc if qua e là che controllano ruoli specifici, che potrebbero essere riutilizzati sia nel codice GUI / webform, sia nel servizio web codice.

Solo per chiarezza, si tratta di un'applicazione Web ASP.NET, che utilizza i moduli web e Script # per la funzionalità AJAX. Non lasciare che lo script # ti scoraggi di rispondere, non è fondamentalmente diverso da asp.net ajax :-)

È stato utile?

Soluzione

Passando dal gruppo tradizionale, dal ruolo o dall'autorizzazione a livello di operazione, c'è una spinta a "basata sui reclami" autorizzazione, come ciò che è stato consegnato con WCF.

Zermatt è il nome in codice per la classe Microsoft- libreria che aiuterà gli sviluppatori a creare applicazioni basate su attestazioni sul server e sul client. Active Directory diventerà uno degli STS su cui un'applicazione potrebbe essere autorizzata in concomitanza con i propri server e altri server standard del settore ...

Altri suggerimenti

In Code Complete (p. 411) Steve McConnell fornisce i seguenti consigli (che Bill Gates legge come favola nella pubblicità di Microsoft).

" utilizzato in circostanze appropriate, il codice guidato dalla tabella è più semplice della logica complicata, più facile da modificare e più efficiente. "

" Puoi utilizzare una tabella per descrivere una logica troppo dinamica per rappresentarla nel codice. "

" L'approccio basato su tabelle è più economico dell'approccio precedente [design orientato agli oggetti] "

Utilizzando un approccio basato su una tabella puoi facilmente aggiungere nuovi "utenti" (come nell'idea di modellazione di un utente / agente insieme alle sue azioni). È un buon modo per evitare molti "se". E l'ho usato prima per situazioni come la tua, e ha mantenuto il codice bello e ordinato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top