¿Cómo puedo implementar diferentes rangos de usuario en una aplicación ?
#1
Escrito 05 julio 2010 - 10:52
#2
Escrito 05 julio 2010 - 11:07
No hay necesidad de que existan muchas bases de datos. Una forma sencilla de abordarlo es tener una tabla Usuarios y una tabla Perfiles y formar una relación (M:1). Es decir para un perfil habrá uno o más usuario. Cada usuario tiene un sólo perfil.
Tabla: Usuarios
---------------
IDUsuario (PK)
PerfilID (FK: Perfiles.IDPerfil)
....
Tabla: Perfiles
-------------
IDPerfil (PK)
Nombre
NivelAcceso
...
Siendo PK = Primary Key o clave primaria y FK = Foreing Key o clave foránea.
El campo NivelAcceso es un campo numérico y se destina para asociar el nivel de acceso o alcance a las funcionalidades. En resumen evaluando este campo podríamos definir si el usuario tiene los privilegios. Por ejemplo:
1 -> Usuarios normales, solo algunas cosas
2 -> Usuarios moderadores, tiene más cosas que los normales
3 -> Usuarios administradores, tienen acceso a todo
De este modo, cuando el usuario inicie sesión se hace una consulta para determinar el perfil y se lee este campo.
Luego en el sistema a los menues, botones, forms, etc. se puede aprovechar la propiedad TAG (que es a uso comodín, para lo que uno quiera) y poner el alcance mínimo que se necesita. Por defecto todo (excepto lo mínimo y escencial) estaría deshabilitado.
Por tanto, como sabemos el NivelAcceso podemos compararlo con el valor en TAG de todos los controles. Si NivelAcceso resulta ser mayor o igual, entonces habilitamos el control, menú, etc en cuestión.
Es decir, vamos explorando cada elemento que requiera de permisos y comparandolo con el valor leído del campo NivelAcceso asociado al usuario a fin de determinar si corresponde habilitarlo.
Naturalmente, cuando el usuario cierra la sesión se debería deshabilitar nuevamente los controles.
Espero que se entienda.
Saludos,
#3
Escrito 05 julio 2010 - 11:08
Lo que yo hago es en la tabla de usuarios les pongo un numero.
Dependiendo del numero en el Form Login determino que botones, menus, etc pueden ver, tienen enables etc.
Es realmente sencillo y practico ya que si un usuario se quiere que tenga mas o menos permisos simplemente se le cambia el numero.
Saludos
#4
Escrito 05 julio 2010 - 12:51
Hola
Lo que yo hago es en la tabla de usuarios les pongo un numero.
Dependiendo del numero en el Form Login determino que botones, menus, etc pueden ver, tienen enables etc.
Es realmente sencillo y practico ya que si un usuario se quiere que tenga mas o menos permisos simplemente se le cambia el numero.
Saludos
Este.... creo que hemos dicho lo mismo La diferencia, es que tu tienes poder de síntesis
#5
Escrito 05 julio 2010 - 04:26
Hola Master23,
No hay necesidad de que existan muchas bases de datos. Una forma sencilla de abordarlo es tener una tabla Usuarios y una tabla Perfiles y formar una relación (M:1). Es decir para un perfil habrá uno o más usuario. Cada usuario tiene un sólo perfil.
Tabla: Usuarios
---------------
IDUsuario (PK)
PerfilID (FK: Perfiles.IDPerfil)
....
Tabla: Perfiles
-------------
IDPerfil (PK)
Nombre
NivelAcceso
...
Siendo PK = Primary Key o clave primaria y FK = Foreing Key o clave foránea.
El campo NivelAcceso es un campo numérico y se destina para asociar el nivel de acceso o alcance a las funcionalidades. En resumen evaluando este campo podríamos definir si el usuario tiene los privilegios. Por ejemplo:
1 -> Usuarios normales, solo algunas cosas
2 -> Usuarios moderadores, tiene más cosas que los normales
3 -> Usuarios administradores, tienen acceso a todo
De este modo, cuando el usuario inicie sesión se hace una consulta para determinar el perfil y se lee este campo.
Luego en el sistema a los menues, botones, forms, etc. se puede aprovechar la propiedad TAG (que es a uso comodín, para lo que uno quiera) y poner el alcance mínimo que se necesita. Por defecto todo (excepto lo mínimo y escencial) estaría deshabilitado.
Por tanto, como sabemos el NivelAcceso podemos compararlo con el valor en TAG de todos los controles. Si NivelAcceso resulta ser mayor o igual, entonces habilitamos el control, menú, etc en cuestión.
Es decir, vamos explorando cada elemento que requiera de permisos y comparandolo con el valor leído del campo NivelAcceso asociado al usuario a fin de determinar si corresponde habilitarlo.
Naturalmente, cuando el usuario cierra la sesión se debería deshabilitar nuevamente los controles.
Espero que se entienda.
Saludos,
Muchas gracias por la idea ,lo tengo resuelto implementaré la opción que me das.