Io l'autenticazione la gestirei in un modo che dipende da una serie di fattori di cui do un estratto non esaustivo
1) Struttura dell'applicazione (ovvero client/server, applicazione web, applicazione desk)
Perche' in una situazione tipo LAMP l'unico utente che accede al DB e' il server apache, ergo la gestione va fatta prima di arrivare al database; al contrario in una client/server (p.es. Delphi + SQLServer) in rete locale e' la gestione della sicurezza puo' risiedere sul DB come su uno strato intermedio che implementa la logica di accesso ai DB (configurazione DB intelligente o DB stupido + terzo strato intelligente)
2) Granularita' di accesso: Viste? Tabelle? Colonne? Righe?
3.a) Protezione alla lettura: l'interfaccia deve presentare dei dati immodificabili in caso non vi sia accesso a quei dati o nasconderli del tutto?
3.b) Senso estetico: viste, bottoni, etichette, etc. devo essere visibili MA inattivi o invisibili del tutto in caso di accesso limitato?
4) Struttra del permesso: e' possibile definire dei ruoli con cui si accede ai dati oppure ogni utente ha livelli di accesso specifici?
5) ...
6) ...
7) ...
...
...
...
9678) ...

Prova a chiedere ad un architetto come organizzerebbe la sicurezza di un edificio ad uso abitativo, cosa ti risponde?