Foros del Web » Programando para Internet » ASP Clásico »

Privilegios.

Estas en el tema de Privilegios. en el foro de ASP Clásico en Foros del Web. Hola. Estoy creando una aplicación asp que tiene una autenticacion. El cliente desea que se tenga privilegios para ingresar a ciertas sección de la página, ...
  #1 (permalink)  
Antiguo 10/04/2006, 15:58
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 20 años
Puntos: 0
Privilegios.

Hola.
Estoy creando una aplicación asp que tiene una autenticacion. El cliente desea que se tenga privilegios para ingresar a ciertas sección de la página, y a su vez, tambien tenga permisos para realizar ciertas operaciones.

Lo que pensaba era utilizar un campo por cada seccion en la tabla usuario. Este campo definiria los privilegios por cada sección. Ejemplo.

usuario Reportes Empleados Directivos
juan r,e r,e r,e

Me gustaría que se utilizaran un valor binario 0010000 para establecer los privilegios. Y a su vez, obtener por medio de una funcion los privilegios.

Nota: Soy muy malo para manejar estos valores en ASP.

Muchas Gracias. A lo mejor ustedes tienen mejores ideas que yo.
  #2 (permalink)  
Antiguo 10/04/2006, 16:41
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Cita:
Lo que pensaba era utilizar un campo por cada seccion en la tabla usuario. Este campo definiria los privilegios por cada sección. Ejemplo.
contenido_id | contenido_nombre
1 | Reportes

Permisos
Leer
Agregar
Editar
Eliminar

"Un tipo de dato puede tener muchos permisos"
"Un permiso corresponde a muchos tipos de dato"
"Un usuario puede tener muchos permisos"

Aquí se ve que la relación debería ser muchos a muchos.

Solución Propuesta:

Código:
tbl_contenido
contenido_id | contenido_nombre
       1                 Reporte
tbl_permiso
permiso_id  |  permiso_nombre
    1                   Agregar
    2                   Editar
    3                   Eliminar

tbl_usuario
usuario_id | usuario_nombre | ...|
   1                Yo Mismo

xref_contenido_permiso
contenido_id     |    permiso_id
      1                        2
      1                        1
      1                        3

xref_usuario_permiso
usuario_id    |   permiso_id
      1                  2

Function accionPermitida(strAccion, intTipoContenido, intUsuario)
   SQL = "SELECT a.permiso_id, b.permiso_id FROM tbl_permiso a INNER JOIN  " & _
   "tbl_usuario b ON a.permiso_nombre = '"&strAccion & "' AND b.usuario_id = "&intUsuario & " INNER JOIN xref_usuario_permiso c ON b.permiso_id = c.permiso_id AND c.usuario_id = b.usuario_id INNER JOIN xref_contenido_permiso d ON d.contenido_id = "&intTipoContenido& " AND d.permiso_id = b.permiso_id"
End Function

if accionPermitida("Editar", 1, session("usuario")) then
  'ejecuta
else
  'no tiene permisos
end if
Algo asi, je je, ya me dio flojera, el chiste es unir esas tablas y hacer el recordset, si hay registros el usuario tiene permisos, si no, pues no, regresas un booleano y listo...

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 11/04/2006, 07:51
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 20 años
Puntos: 0
Gracias, por responder. Asi es la idea, no lo habia pensado asi. En cuanto a la consulta, pues ya es chamba mia. El objetivo del post, es que me den una idea y yo la desarrollo.
Solo me quedaria una duda, que es mas factible, que cuando se autentique al usuario se obtenga sus permisos y todos ellos los guarden en una variable de sesion o que se hagan consultas cada vez que requiera una operacion.

Muchas gracias.
  #4 (permalink)  
Antiguo 11/04/2006, 08:04
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Yo diria que se manejan dos estados para los usuarios

1. Su user_id que esta en sesion
2. Si tiene permiso para ejecutar la tarea(base de datos)

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 11/04/2006, 08:47
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 20 años
Puntos: 0
ah OK, ya te entendi. Su user_id en la sesion y cada vez que se requiere verificar el permiso una conexion a la base de datos.

Gracias, por tu ayuda y por la rapidez de la respuesta...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:32.