 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
ferpb Invitado
|
Publicado: Jue 24 Oct, 2002 6:52 pm Asunto: RESTRINGIR PARTES DE UNA APLICACION MULTIUSER |
|
|
hola,
estoy haciendo un programilla multiusuario en el que puede haber diferentes tipos de usuario con diferentes permisos sobre el programa.
en principio he pensado que un usuario administrador es el encargado de conceder o denegar permisos a otros usuarios y ese perfil almacenarlo en una tabla de una bd y recuperarlo cuando el usuario inicia la aplicacion y se autentifica.
bien, pues la duda es como limitar el acceso a determinadas opciones del programa (se me ocurren varias sencillas):
1. almacenar si esta disponible cada opcion del menu principal y de este modo habilitarla/deshabilitarla segun el usuario.
2. hacer la comprobacion en el constructor de cada formulario.
si lo que quiero es permitir/denegar operaciones dentro de un formulario (lectura, borrado, insercion, etc), que debo hacer¿recorrer los botones de aceptar datos y deshabilitarlos si procede en funcion del permiso?
¿debería en este caso almacenar el permiso de cada uno de estos controles en un campo de una tabla?
si alguien tiene experiencia en esto o se le ocurre algo mejor(o peor aunque diferente), que no dude en enviarlo.
un saludo
gracias |
|
| Volver arriba |
|
 |
UnaiQx Invitado
|
Publicado: Jue 24 Oct, 2002 7:01 pm Asunto: Re: |
|
|
| Oye ferbp has pensado en hacer una lista con valores de claves y el nombre para esos valores ,con un StringList |
|
| Volver arriba |
|
 |
ferpb Invitado
|
Publicado: Mar 29 Oct, 2002 8:56 am Asunto: |
|
|
hola,
de lo que se trata es de donde tengo que restringir la aplicacion a nivel de menus de la aplicacion, a nivel de formulario (al crearlo) o componente a componente (comprobando en cada form si un usuario tiene permiso para usar cada uno de los botones/opciones). esta ultima me parece la opcion mas dificil y laboriosa y la primera la mas simple, pero tambien mas rigida, ya que creo que implicaria tener dos forms distintos para cada parte de la aplicacion, uno que me permite solo consultar datos y otro que tambien permita insertar/modificar/borrar. si alguien sabe cual puede ser la mejor opcion, estaré eternamente agradecido (o al menos una buena temporada). un saludo a todos |
|
| Volver arriba |
|
 |
KAYETANO Ens

Registrado: 04 Sep 2002Mensajes: 37
|
Publicado: Mar 29 Oct, 2002 9:53 am Asunto: |
|
|
Hola
Yo lo suelo hacer de las dos formas, cuando creo los menus, muestro solo las opciones a las que puede acceder dependiendo de sus permisos, y ademas en cada modulo de la aplicacion comprueba que el usuario tiene permisos para acceder, nunca esta de mas la seguridad cuando se necesita, esto lo hago asin para asegurarme que no dejo ninguna puerta abierta.
El metodo que yo utilizo es muy facil, asigno un valor a cada nivel de usuarios, y otro a cada modulo (los almacenas donde quieras) y compruebo que el valor del usuario es mayor o igual al requerido. El problema de este metodo es que no permite personalizar, pero es rapido y facil. _________________ Salu2
KAYETANO |
|
| Volver arriba |
|
 |
ferpb Invitado
|
Publicado: Mar 29 Oct, 2002 10:49 am Asunto: |
|
|
hola denuevo,
gracias Kayetano, habia pensado en los permisos de los usuarios, pero asignarle un valor a cada opcion me parece una idea bastante buena. voy a pensarlo mas detallado a ver que sale.
unsaludo |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Mar 29 Oct, 2002 11:00 am Asunto: |
|
|
holaotravez,
aunque la solucion de Kayetano me parece muy buena y facil de llevar a cabo le veo un problemilla pensandolo mas a fondo:
funciona dpm si los grupos de usuarios son digamoslo asi "jerarquicos", de modo que un grupo de nivel superior incluye los de nivel inferior, pero yo lo que tengo que hacer es permitir grupos mas bien "horizontales", en los que un usuario puede tener acceso a los recursos A, B, C, y otro solo a C otro solo a A, etc. por lo que no sirve por niveles.
entonces se me ocurre almacenar un campo en una tabla para el permiso de cada recurso o dos campos: uno con todos las claves de permiso en una cadena con delimitadores, y otra cadena con los valores para esas claves tambien con delimitadores, cargarla en una lista al abrir la aplicacion y recorrer opcion a opcion??? |
|
| Volver arriba |
|
 |
KAYETANO Ens

Registrado: 04 Sep 2002Mensajes: 37
|
Publicado: Mar 29 Oct, 2002 1:23 pm Asunto: |
|
|
Hola
Efectivamente, tienes toda la razon, ese es otro problema
Otra idea que se me ocurre es generar una tabla permisos en la que se guardara un codigo identificativo del recurso y el codigo que identifica al usuario, cuando se intenta acceder al recurso simplemente se compueba que existe un registro en esta tabla que relacione al usuario con el recurso.
Ademas de esta forma podemos tambien controlar lo que puede o no hacer con el recurso, añadiendo un nuevo campo donde indiques el nivel de acceso al recurso (por ejemplo) con lo que aun teniendo acceso se le puede limitar.
Con esta opcion es facil tambien activar o desactivar las opciones de menu, simplemente comprobando a que recursos tiene acceso un usuario con una simple consulta a la tabla. _________________ Salu2
KAYETANO |
|
| Volver arriba |
|
 |
Alfredo Invitado
|
Publicado: Mar 29 Oct, 2002 11:10 pm Asunto: Accesos |
|
|
Hola, estoy en lo mismo, ya tengo la aplicacion y necesito restringir los accesos, he hecho algunas pruebas y elegi la flexibilidad a pesar de ser mas complicado.
En el Evento OnShow de cada form hago un casting de los componentes restringibles, ej menuitems, botones y Edits y verifico en una tabla unica los permisos, si aparece se permite, caso contrario se oculta. (Puede ser al reves si la aplicacion no es muy amplia)
La tabla tiene los campos siguentes:
Usuario,Form,Objeto.
Claro esto hace algo lenta la apertura del form, lo otro es hacer lo mas amigable posible la interfaz para el administrador, he pensado utilizar los mismos forms, pero que respondan de manera diferente cuando se abren como administrador, por ej. los menuitems se chequean o deschequean al hacer click, luego al cerrar el form se guarda en la tabla todo lo que este marcado.
Espero que sirva y si hay sugerencias por favor adelante. |
|
| Volver arriba |
|
 |
iLUSO Invitado
|
Publicado: Mie 06 Nov, 2002 7:22 pm Asunto: |
|
|
| Doy una respuesta a bote pronto pero no seria mejor consultar solo una vez la tabla de permisos-usuarios al principio cuando este entra en el programa y despues pasar como parametro al constructor de la form el nivel de seguridad de este , con este dato activar o desactivar los menus pertinentes. |
|
| Volver arriba |
|
 |
DesaSoftware Invitado
|
Publicado: Vie 08 Nov, 2002 2:08 am Asunto: |
|
|
Disculpen mi ignoracia
¿Por que tanto lio con la creacion de componentes segun el perfil de usuario?
Existe algun modo de habilitar (Nivel usuario medio) opciones qeu tenemos definicdas con el parametro enable en false? (¿Seguridad?)
¿Vale la pena de la creacion dinamca segun el perfil?
¿Es una aplicacion para la nasa? (perdon por el sarcasmo)
Diganme porfavor que hay de malo en tener una archivo binario encriptado donde se establezcan los accesos por usuario y el programa al iniciar cada forma habilite o deshabilite los menus, botones o lo que este definido por el archivo
Claro quedaria una funcion grande con un una serie if por cada control
pero considero que es lo mas rapido
POR FAVOR SI NO ES CORRECTO MI RAZONAMIENTO DIGANME!!! |
|
| Volver arriba |
|
 |
Alfredo Invitado
|
Publicado: Mie 13 Nov, 2002 7:48 pm Asunto: Seguridad |
|
|
Hola a Todos:
A DasaSoftware: En algunos casos es necesaria la creacion dinamica, por ej. en mi aplicacion cada usuario puede tener sus propias consultas guardades en la misma base de datos, estas se cargan como items de menu para su rapido acceso. Tambien hay opciones predefinidas y aqui entra la propiedad enabled o mejor visible, ya que la enabled la reservo para aquellas acciones que estando permitidas al usuario no estan disponibles en un momento dado.
Aunque no sea una aplicacion para la Nasa a ningun gerente de personal le agradaria la idea de que cualquiera pudiera ver y/o cambiar los salarios de los empleados....
En cuanto a tener un fichero encriptado, es preferible tenerlo en forma de tabla en la misma B.D. ya que no es necesario acceder a cada pc para realizar modificaciones, ademas es mas facil proteger una sola puerta que varias.
Para iLUSO:
Es facil comodo y rapido hacer lo que propones pero tiene la pega de ser tambien facil de crakear, tengo la teoria tanto para los accesos como para la proteccion antipiracy de realizar varias veces las verificaciones y en puntos del programa inesperados....
Para los demas: Animarse y exponer sus ideas y dudas...
Saludos... |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Lun 07 Ago, 2006 3:34 am Asunto: Formulario de asignacion de permisos |
|
|
Hola.
Estaba viendo este post y el almacenar el nombre del menu asociado a una funcionalidad específica no es mala idea.
La cosa que no he podido dar es cómo mostrar visualmente la asignacion de permisos de usuario para el menu de la aplicacion?..
Estuve pensando en una forma de arbol en la que cada nodo fuera un item del menu principal y que tenga una especie de check la cual guarde el permiso... alguien sabe como hacerlos?
De antemano muchisimas gracias. |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Dom 20 Ago, 2006 5:10 am Asunto: Arbol de permisos |
|
|
Hola.
Estaba viendo este post y el almacenar el nombre del menu asociado a una funcionalidad específica no es mala idea.
La cosa que no he podido dar es cómo mostrar visualmente la asignacion de permisos de usuario para el menu de la aplicacion?..
Estuve pensando en una forma de arbol en la que cada nodo fuera un item del menu principal y que tenga una especie de check la cual guarde el permiso... alguien sabe como hacerlos?
De antemano muchisimas gracias. |
|
| Volver arriba |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Mar 29 Ago, 2006 10:38 pm Asunto: |
|
|
| Una forma amigable de manejarlo seria en un form de configuracion para especifico para esto poner copias de todos los menus que se encuentren en los forms de la aplicacion, mediante un selector, puede ser un ComboBox elejimos que form configurar y asignamos la propiedad Menu al elegido, todos los items responderian chequeandose o deschequeandose, una vez terminada la tarea de asignar privilegios podemos recorrer los Items del menu y grabarlos en una tabla con los campos siguentes: Usuario|Form|MenuItem|Visible, para despues recorrerla cuando el usuario abra el form e ir aplicando lo definido. |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Mie 30 Ago, 2006 1:18 am Asunto: Gracias de todas maneras |
|
|
He visto en la mayoria de las aplicaciones comerciales que la asignacion de permisos se basa en desplegar los items del menú principal como arbol y se deja chequeada o no el nodo perteneciente al menu o submenu de la vista principal.
estoy buscando la forma de lograr ello... apenas tenga noticias las publicaré |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|