PDA

Ver la Versión Completa : Como Puedo Crear un Sistema de Seguridad de Usuarios basado en los Roles de Interbase


hromero
15-05-2003, 00:29:10
Me Gustaria saber como puedo aprobechar los roles de interbase a nivel de los menu de Delphi.

Es decir quisiera que los usuario solo puedan tener acceso a las opciones del menu que yo les delimite, y que no aparezcan las opciones a las cuales no tiene Acceso.

Gracias! :confused:

lbuelvas
15-05-2003, 16:33:51
Hola club,

Lo primero que debes hacer es cuando hagas la conexion a la aplicacion que el usuario digite el nombre de usuario, el password y el nombre del rol. Debes tener en cuenta que debes haber creado los roles previamente en la BD y asociado la membresia, es decir, que usuario pertenece a que rol /roles.

El componente TIBDatabase no tiene (o no he visto) forma de colocar el rol, solo aparece el usuario y password. EN mic caso particular me toco hacer un formulario para poder poner a disposicion y capturar el nombre del rol.

Ese nombre de rol luego lo puedes colocar en una variable global al programa y cuando alguien vaya a entrar a un menu por codigo determinas que roles si pueden entrar al menu.

Espero haber colaborado, exitos.

ALMERA
16-05-2003, 00:00:07
Hola amigo, yo lo que hago es que me creo una tabla de usuarios con estos campos codigo,nombre,clave y rol, tambien suelo poner nuevos campos para permisos especiales de partes especiales del programa, tambien me creo una tabla de roles con los campos rol, titulo,nivel_de_permiso, obviamente enlazo estas dos tablas através del campo rol, seguidamente uno el campo tag en los items del menu donde identifica el permiso, entonces lo que hace la aplicación al empezar es pedir el usuario y password, y al aceptar compruebo su contraseña , etc y guardo en una variable global el nivel de permiso y otros datos, para permisos especiales, ahora recorro todos los elementos del menu comparando el nivel de permiso que guardo en la variable global con el tag de cada elemento, si el tag es mayor que el nivel de permiso pues desactivo y pongo invisible este elemento.

En conclusion, estoy usando de usuario siempre al SYSDBA con contraseña distinta a masterkey obviamente, es decir en la base de datos siempre es el mismo usuario, el control de usuario lo hago en la aplicación y no en la base de datos, es una opción, me parece genial llevar el control de usuario en la base de datos, pero se tarda muchisimo más en controlar esto y administrar todos los permisos de cada usuario sobre cada objeto de la base de datos, etc, eso sis los permisos sobre los roles y los usuarios se le asignan roles, pero me resulta igual de coñazo, ya que én la aplicación vas ha tener que controlar el usuario igualmente ya que según quien entre al usar partes de la aplicación que usen objetos de la base de datos que tenga acotado, empezará a petardearse la aplicación dando cada dos por tres errores, por lo tanto a mi modo de ver el control de usuario en la base de datos es triple trabajo.

Espero que te haya servido de ayuda.

Resumen: me parece mas formal llevar el control en la propia base de datos, pero tiene el coste de que tardarás el triple en programar todo esto, teniendo el mismo resultado.

A veces hay que valorar estas cosas, que es lo que más merece la pena.

IVAND
16-05-2003, 21:57:28
Utiliza los componentes Jfactivesoft y listo se acabaron los problemas de accesos
:cool: