La maggior parte delle app web esegue controlli di autorizzazione a livello di controller. Questo è fondamentalmente ok, ma le app complessive tendono ad avere controlli ripetitivi. Ad esempio, potrebbero esserci una decina di azioni del controller che operano su un ordine e ogni azione deve verificare che l'utente corrente sia autorizzato ad accedere a tale ordine.
Alcune app si occupano di questo con le funzioni di supporto nell'ordine, ad es. Order.isUserAuthz () e questo riduce il numero di codice. Tuttavia, c'è ancora il rischio che un particolare metodo di controllo si dimentichi di chiamare quella funzione. Dalla mia esperienza con i test delle penne, questo è abbastanza comune nelle app complesse.
Invece, che ne dici se il livello del modello esegue il controllo dell'autorizzazione? Pertanto, quando carichi un ordine, verrà caricato solo se l'utente corrente è autorizzato. Poiché questo viene fatto dal livello del modello, non c'è il rischio che il livello del controller dimentichi di effettuare una chiamata. In definitiva, ciò che stai facendo è ridurre la quantità di codice critico per la sicurezza, che riduce il rischio di un errore di codifica che causa una vulnerabilità.
Questa mi sembra una buona idea, ma non è una pratica comune. Hai qualche idea sui rischi che potrebbe comportare o sulle difficoltà di implementazione?