In genere, metto le decisioni di autorizzazione nei miei controller lato server. Questi sono stati endpoint RESTful di recente, ma penso che lo stesso sia per le architetture di tipo MVC. Per amor di discussione, supponiamo che si tratti di un'autorizzazione basata su ruoli. Un metodo protetto verrà annotato o verificherà e restituirà 403 se necessario.
Ora, dato che l'autorizzazione è di fatto una regola aziendale - "solo gli amministratori possono elencare X", ad esempio, penso che dovrebbero essere spinti verso il basso in un livello. Quando un controllore chiede al livello aziendale di eseguire l'operazione, il livello di servizio o aziendale informa il controllore che non è autorizzato.
È un approccio ragionevole? Ci sono degli svantaggi?
Ho il malumore di avere un AuthorisationService che contiene essenzialmente alcune regole codificate procedurali statiche per fare ciò, ma forse ha senso mantenere tutta la logica di accesso in un unico posto. È una preoccupazione trasversale che dovrebbe essere tenuta separata?
Quindi sto chiedendo se qualcuno ha fatto questo e come l'hanno raggiunto in modo pulito o se ci sono buone risorse che potrei leggere. Sto usando Java fwiw ma questa è una domanda agnostica del linguaggio.
Ho controllato le domande correlate qui e sono molto magre sul campo e risposte. Ad esempio: Validazione e autorizzazione in Modelli di dominio e trasporto che attraverso un livello di servizio di MVC
eta: sto leggendo i documenti di sicurezza di primavera che fanno alcuni buoni argomenti per essere una preoccupazione trasversale, ma sono preoccupato che è solo il "modo primaverile" e vorrebbe prospettive più ampie. Lega anche la tua applicazione a un framework specifico.