MVP Pattern Domanda filosofica - Controllo sicurezza nell'interfaccia utente

4

Ho una domanda filosofica sul pattern MVP: ho un componente che controlla se un utente ha accesso a un determinato privilegio. Questo privilegio attiva o disattiva alcune funzionalità dell'interfaccia utente. Ad esempio, supponiamo di avere una griglia di interfaccia utente e, per ogni riga vincolata, eseguo un controllo di sicurezza per verificare se alcune funzionalità della griglia devono essere abilitate o disabilitate.

Ci sono due modi per farlo: l'interfaccia utente / vista chiama il metodo del componente, determina se ha accesso e abilita / disabilita o mostra / nascondi. L'altro è che la vista attivi un evento per il presentatore, fa fare il checker al relatore e restituisce l'accesso alla vista attraverso il modello o attraverso l'evento arg.

Come per lo schema MVP, a quale componente devono essere inseriti i controlli di sicurezza, il presentatore o la vista? Dal momento che la vista lo sta usando per determinare la sua accessibilità, sembra più appropriato nella vista, ma sta facendo controlli sul database e tutti all'interno di questo componente aziendale, e lì c'è la logica aziendale, quindi posso vedere anche l'argomento inverso. p>

Pensieri?

    
posta Brian Mains 08.03.2011 - 22:08
fonte

3 risposte

5

Il controllo di sicurezza appartiene al modello e i dati che non dovrebbero apparire nell'interfaccia utente non dovrebbero essere disponibili per la vista. Altrimenti devi duplicare la logica di sicurezza in ogni vista che hai sui dati e un errore in uno di essi porterà a un difetto di sicurezza nel tuo prodotto.

    
risposta data 09.03.2011 - 00:34
fonte
1

As per the MVP pattern, which component should security checks fit into, the presenter or the view? Since the view is using it to determine its accessibility, it seems more fitting in the view, but it is doing database checks and all inside this business component, and there is business logic there, so I can see the reverse argument too.

Dovrebbe essere nel controller e nel modello. Solitamente è un componente filtro, risiede nel controller, in cui si controlla se l'utente ha accesso chiamando il modello e interrogandolo, e quindi il controllore decide se deve rendere quel componente alla vista.

Nota: sono ancora un principiante in MVC, ma è così che lo vedo.

    
risposta data 09.03.2011 - 05:34
fonte
0

Non sono sicuro che estrarre i dati che un utente / gruppo non era autorizzato a vedere (oltre alle chiavi, all'ID ecc.). Non puoi mostrare gli stessi dati in diverse viste, ma se inizi a fare rapporti, devi fare molte duplicazioni.

Stai parlando solo di riga o colonna / campo?

    
risposta data 08.03.2011 - 22:44
fonte

Leggi altre domande sui tag