Nella maggior parte delle applicazioni Web, il modello di sicurezza è definito a livello di logica aziendale, non a livello di dati.
Ad esempio, la mia capacità di modificare un post su Stack Overflow non è controllata dalla mia capacità di leggere/scrivere nella tabella "post" - infatti, probabilmente non potresti nemmeno progettare uno schema di database che ti consenta di implementare a livello di database sicurezza a questo livello. Invece, c'è un livello di logica aziendale che confronta i miei privilegi con l'azione che sto cercando di intraprendere (presumo); la sicurezza è implementata a livello di logica aziendale.
Francamente non vedo quasi alcun vantaggio nel passare le credenziali al livello del database:se in qualche modo avessi aggirato la logica aziendale per controllare chi può modificare i post SO, i controlli "lettura/scrittura" del database non lo impedirebbero e il controllo non lo farebbe ti aiuto davvero.
Vedo MOLTI inconvenienti, non ultimo il fatto che dividerai la tua logica di autorizzazione in due (logica aziendale e database) e introdurrai tutti i tipi di modalità di errore divertenti con la sincronizzazione degli account tra il livello della logica aziendale e il livello del database (gli utenti cambiano il loro password, o abbandonando il sito web). Non riesco a immaginare come testare ed eseguire il debug di tutto questo in modo sano:cosa succede se un utente finale riceve un errore relativo ai privilegi del database?