Ir al contenido


Foto

¿Cómo puedo implementar diferentes rangos de usuario en una aplicación ?


  • Por favor identifícate para responder
4 respuestas en este tema

#1 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 05 julio 2010 - 10:52

El problema es que la aplicación que quiero realizar es quiero tener diferentes tipos de usuarios y bueno cada usuario tiene diferentes privilegios ,cual sería la forma de implementarlo , porque hay usuarios que no quiero que tengan permisos a ciertas cosas pero entonces tendría que crear 3 bases de datos y  para los moderadores ,administradores y los usuarios normales para poder limitarlos a ciertas cosas de la aplicación etc. espero que me puedan ayudar dando me la idea o un ejemplo si es posible pero de todas formas con una idea me guío ,gracias de antemano.
  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 05 julio 2010 - 11:07

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,
  • 0

#3 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 05 julio 2010 - 11:08

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
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

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 :D
  • 0

#5 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

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.
  • 0




IP.Board spam blocked by CleanTalk.