Il modo migliore per progettare Access Control Layer in un'applicazione di architettura a più livelli

6

Questo è uno scenario tipico di architettura per un progetto a 3 livelli:

UI-tier
Ha componenti dell'interfaccia utente grafica

Medio-tier
Ha una logica aziendale che include i seguenti livelli:

  1. Data Access Layer (DAL)
  2. Controllo di accesso

livello dati
Tipicamente il tuo database o la tua memoria di dati fisici

Qual è il modo migliore per implementare Controllo accesso quando le prestazioni sono in cima all'elenco di priorità?

  • Il DAL dovrebbe restituire TUTTI i dati e il livello dell'interfaccia utente dovrebbe preoccuparsi del controllo degli accessi?
  • Il DAL dovrebbe eseguire il controllo degli accessi, ovvero decidere con i dati da restituire, in modo che l'interfaccia utente non si preoccupi del controllo accessi?

Che cosa pensi di questo e cosa ti guida quando prendi queste decisioni di design?

    
posta Julius A 09.02.2011 - 18:07
fonte

1 risposta

5

Definirei sicuramente AccessControl sul DAL.

Ecco alcuni motivi per cui posso pensare:

  • Molto spesso avrai più moduli di interfaccia utente per gli stessi dati e dovresti codificare AccessControls in tutti loro. Anche gli aggiornamenti potrebbero richiedere più tempo e errori, in quanto dovresti ricordare di aggiornare ogni modulo che fa riferimento a quei dati quando si verifica una modifica.

  • Se si decide di creare un'altra versione dell'applicazione in un'altra struttura, ad esempio una versione Web di un'app desktop, sarà necessario ricreare tutti gli AccessControls per la nuova IU. Se AccessControls era nel DAL, devi solo collegarti al tuo DAL e creare l'interfaccia utente.

  • Senza AccessControls sul DAL si aprono molte falle nella sicurezza. Se qualcuno può ignorare la tua interfaccia utente, può accedere a tutti i tuoi dati

risposta data 09.02.2011 - 18:58
fonte