Firebird21 (Pronto nos mudamos, preguntas en el forol)

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Búsqueda Avanzada  

Noticias:

Tus inquietudes seran respondidas en breve..

Autor Tema: Usuarios de la aplicación y de la base de datos  (Leído 1353 veces)

0 Usuarios y 1 Visitante están viendo este tema.

juanki

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 26
    • Ver Perfil
    • Código Qt
Usuarios de la aplicación y de la base de datos
« en: Mayo 06, 2018, 04:56:57 pm »

Hola

Tengo mi pequeño sistema medio funcionando, estaba leyendo sobre los usuarios de la base de datos y me topé con este post:
http://yoforeo.com/firebird21/index.php?topic=1448.msg5086#msg5086

Actualmente tengo una tabla usuarios en la que guardo el ID, Nombre, Contraseña y Privilegios. Estos pueden ser solo dos: Administrador o Usuario.

Cuando inicia la aplicación, muestro un formulario en el que pido el usuario y contraseña y si corresponden con algún usuario de esa tabla y son correctos los datos, pues accede a la aplicación. El usuario normal hay cosas que no puede hacer, lo que hago es desactivar las opciones correspondientes de los menús de la aplicación, así no puede usar lo que no debe.

Pero no tiene ninguna restricción en la base de datos, vamos, no creo ningún usuario en la base de datos, y viendo el mensaje que puse antes, me surgió la duda.

Entiendo entonces que debería crear un par de roles, cada uno con sus permisos, y crear tantos usuarios en la base de datos como de de alta en la aplicación. Entonces ¿ya no sería necesaria mi tabla de usuarios? O sí, por que aunque el usuario normal no tenga permisos en la base de datos, tendré que seguir desactivando las opciones que no puede usar, ya que si no, saltaría un error al tratar de usarlas ¿no?

A ver si me acaráis cual sería el proceso correcto a seguir.

Un saludo
En línea


Walter

  • Administrator
  • Gigabyte
  • *****
  • Karma: +17/-0
  • Mensajes: 505
    • Ver Perfil
Re:Usuarios de la aplicación y de la base de datos
« Respuesta #1 en: Mayo 23, 2018, 01:49:07 am »

Hola

Son cosas distintas, aunque están muy relacionadas, y por ese motivo se presta mucho a confusión.

Los usuarios de tu aplicación y los usuarios de tu Base de Datos no necesariamente son los mismos.

Por ejemplo, podrías tener a un Administrador de Bases de Datos que nunca usa tu aplicación sino que se dedica a hacer/restaurar backups, hacer sweeps, etc.

No importa que derechos le des a un usuario dentro de tu aplicación, para el Firebird lo único que importa son los derechos que ese usuario tiene dentro de la Base de Datos. Por ejemplo, si tu aplicación le permite consultar los precios de los productos y en tu Base de Datos no tiene ese derecho, pues no podrá consultar. Y punto.

Tener una tabla de USUARIOS es útil en muchas ocasiones, ya que no solamente puedes colocar allí las opciones que los usuarios tienen disponibles sino también personalizar tu aplicación: cada usuario puede elegir una imagen de fondo, color del texto, etc.

Pero lo recomendable es no otorgar derechos a los usuarios individualmente, sino a los roles. Es mucho más fácil y más cómodo controlar roles que controlar usuarios. Mi política por lo tanto es: a los usuarios ningún derecho, los derechos solamente a los roles, y a los usuarios se les asigna uno (o a veces, más de uno) de esos roles.

Y ya que estamos hablando de derechos, lo recomendable es nunca otorgar derechos sobre las tablas, los derechos solamente deben otorgarse a las vistas y a los stored procedures. Eso disminuye muchísimo la probabilidad de que algún descerebrado "meta la pata" y cause daño a la Base de Datos.

Por otro lado, si tienes una tabla de USUARIOS eso te obligará a trabajar más, porque debes mantenerla sincronizada. Por ejemplo, si el rol R_AUXILIAR_CONTABLE no poseía el derecho de ver las ventas realizadas y ahora quieres otorgarle ese derecho, esa tarea debes hacerla dentro de tu Base de Datos, pero además deberás cambiar acordemente tu tabla de USUARIOS. Doble trabajo. Nada del otro mundo, nada difícil de hacer, nada complicado, pero ... doble trabajo.

Y evidentemente que si no haces el doble trabajo, habrá un desfasaje.

Saludos.

Walter.

En línea

juanki

  • Bit
  • *
  • Karma: +0/-0
  • Mensajes: 26
    • Ver Perfil
    • Código Qt
Re:Usuarios de la aplicación y de la base de datos
« Respuesta #2 en: Mayo 23, 2018, 12:43:40 pm »

Hola

Muchas gracias por la respuesta, voy a tomar el consejo y empezaré a hacer las cosas así. Nombras las vista y ¡¡ tampoco las uso !!

Estoy usando las librerías Qt, que ya traen una serie de clases para conectarse y manipular datos de las bases de datos y con "cuatro líneas" tienes todo hecho, pero claro, el programa depende por completo de Qt, si por el motivo que sea debo migrar a otro lenguaje/frameworks tengo que rehacer todo todo, voy a empezar a separar y dejar en la base de datos lo que es de la base de datos.

Un saludo
« Última modificación: Mayo 23, 2018, 12:45:17 pm por juanki »
En línea
 

Enlaces

Blog de Firebird21 WebMaster