En la mayoría de las aplicaciones web, el modelo de seguridad se define en la capa de lógica empresarial, no en la capa de datos.
Por ejemplo, mi capacidad para editar una publicación en Stack Overflow no está controlada por mi capacidad para leer/escribir en la tabla de "publicaciones"; de hecho, es probable que ni siquiera pueda diseñar un esquema de base de datos que le permita implementar a nivel de base de datos seguridad en este nivel. En cambio, hay una capa de lógica comercial que compara mis privilegios con la acción que estoy tratando de tomar (supongo); la seguridad se implementa en la capa de lógica empresarial.
Francamente, no veo casi ningún beneficio en pasar las credenciales a la capa de la base de datos:si de alguna manera hubiera pasado por alto la lógica comercial para controlar quién puede editar publicaciones SO, los controles de "lectura/escritura" de la base de datos no lo evitarían, y la auditoría lo haría. Realmente te ayudo.
Veo MUCHOS inconvenientes, entre ellos el hecho de que dividirá su lógica de autorización en dos (lógica de negocios y base de datos) e introducirá todo tipo de modos de falla entretenidos con cuentas sincronizadas en su capa de lógica de negocios y capa de base de datos (usuarios cambiando su contraseña o abandonar el sitio web). No puedo comenzar a imaginar cómo probaría y depuraría todo esto con cordura:¿qué sucede si un usuario final recibe un error relacionado con sus privilegios de base de datos?