Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2008
luxus luxus is offline
Miembro
 
Registrado: oct 2004
Posts: 134
Poder: 20
luxus Va por buen camino
Controlar acceso a Usuarios

Hola Amigos,

Estoy finalizando una aplicación y tengo que implementar un sistema de acceso a la misma mediante el nombre de usuario y una contraseña. He estado leyendo por el foro pero no he encontrado algo que me pueda ayudar.

En el programa habrá un administrador el cual dará de alta a los demas usuarios y la clave de acceso. Cada administrador tendrá un nivel de permisos con lo que en algunos apartados algunos usuario no tendrán acceso.

Alguna idea de cómo implementarlo? Uso una base de datos en access con lo que me planteo en guardar las contraseñas y nombre de usuarios en otro sitio para que nadie pueda alterar los permisos.

Gracias y un saludo
Responder Con Cita
  #2  
Antiguo 13-06-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Cool

Cita:
Empezado por luxus Ver Mensaje
Hola Amigos,

Estoy finalizando una aplicación y tengo que implementar un sistema de acceso a la misma mediante el nombre de usuario y una contraseña. He estado leyendo por el foro pero no he encontrado algo que me pueda ayudar.

En el programa habrá un administrador el cual dará de alta a los demas usuarios y la clave de acceso. Cada administrador tendrá un nivel de permisos con lo que en algunos apartados algunos usuario no tendrán acceso.

Alguna idea de cómo implementarlo? Uso una base de datos en access con lo que me planteo en guardar las contraseñas y nombre de usuarios en otro sitio para que nadie pueda alterar los permisos.

Gracias y un saludo
Creo que igualmente te puedes crear una tabla en Access con los datos de los usuarios... pero en el campo de la contraseña o clave, realizar un proceso para guardar dicho dato encriptado.... puedes encontrar varios modelos o algoritmos de encriptación... o te puedes crear uno propio... tan simple como tomar los caracteres uno por uno, convertirlos a ASCII y sumarles cierta cantidad y almacenarlos como binario o caracter...

con respecto a los permisos de los usuarios, y tenemos los niveles, creo que una buena forma es limitando el acceso al menu principal...

en donde al que tenga menos permiso le desabilitas las opciones de menu, y así sucesivamente..

mira el sgte codigo, lo que realiza es desabilitar el menu de acceso al sistema según el valor que traiga el usuario (Sw2='2' o ='3'... si es ='1' tiene todo el acceso)

Código Delphi [-]
   If (Sw2= '2') Or (Sw2= '3') Then
        Begin
             Menus.Items[1].Items[0].Enabled := False;
             Menus.Items[1].Items[1].Enabled := False;
             Menus.Items[1].Items[2].Enabled := False;
        End;
     If Sw2 = '3'Then
        Begin
             Menus.Items[0].Items[1].Enabled := False;
        End;

espero que esto te sirva...

bueno, de seguro existen otras opciones, pero esa le he utilizado y me ha funcionado super...

Salu2
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 13-06-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola luxus,
Lo que te ha dicho el compañero BlueSteel es lo básico a tener en cuenta. Pero deberás tener presente (muy presente) de como deben estructurarse tanto los permisos como los perfiles.
Y esto dependerá de como se trabaje en dicha empresa/negocio como así también del nivel de seguridad que se exige para el sistema.

Por ejemplo, el modo básico dice que para un perfil existe al menos un usuario. Pero un usuario tiene un sólo perfil. Es decir el esquema relacional vendría a ser 1-M desde Perfiles a Usuarios.

Pero el modelo del negocio puede impulsar una estructura basada no simplemente en perfiles sino también en funciones. En este caso, pueden darse el caso de que muy a pesar de existir un perfil no todos los usuarios para un mismo perfil cumplen las mismas funciones y/o actividades. De este modo estamos en una situación diferente. La estructura organizacional impone un nuevo diseño en la base de datos.
Tal vez se pueda conseguir haciendo un esquema de sub-perfiles. Es decir que un usuario tiene un perfil y además un sub-perfil. De este modo se podría hacer indicar con un sub-perfil cuales son las funciones que cumple.

Tal vez el esquema sea:

Perfiles -1---M- SubPerfil
Perfiles -1---M- Usuarios
SubPerfil -1--M-Funciones

El esquema es un ejemplo. Es para dar una idea.

¿Hemos terminado? No... Nos queda otra situación más extrema por analizar: ¿Puede existir el caso en que un usuario tenga muchos perfiles y a su vez, que cumpla ciertas funciones, no necesariamente obligatorias para un sólo perfil? Si. ¿Es tu caso?

Pues deberás analizar.
¿Porqué te comento esto? Pues por el modo en como has dado a conocer tu problema intuyo que el modelo más simple no te será de total agrado (al menos eso me indica un primer vistazo rápido de tu mensaje).

Si dices que si hay diferentes perfiles (el perfil de administrador es uno de ellos) y que cada uno tiene un nivel de acceso entonces es muy claro que deberás estructurar tus tablas de modo que:

1. Una persona tenga un perfil.
2. Una persona tenga un nivel de acceso.

Ahora me hago la pregunta ¿El nivel de acceso es dependiente sólo para los administradores? ¿O por el contrario, tiene cierto significado para otros perfiles?

Dependiendo de tu respuesta sabrás si existe alguna relación entre la tabla Perfil y la tabla NivelAcceso.

Si supongo que el nivel de acceso no depende del perfil se podría, en una primera aproximación, decir que:

NivelAcceso -1---M- Usuarios -M---1- Perfil

Como vez, el asunto obligadamente requiere de un análisis y deberá venir en última de ti.
Si tienes mayores dudas, puedes consultarnos. Aqui estaremos para asesorarte.

Mientras tanto busca definir que tan elaborado tiene que ser el manejo de los perfiles y esas particularidades.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 13-06-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo esto lo he estructurado así:

Tengo tres tablas:

usuario = (id, usuario, contraseña)
proceso = (id, descripción)
permiso = (id, usuario_id, proceso_id)

Cada proceso corresponde a un punto del sistema al que se puede acceder o no, de manera que cada usuario puede tener permiso a múltiples procesos y múltiples usuarios pueden tener permiso a un proceso, es decir, una relación n - n, que queda plasmada en la tabla permiso.

El administrador tiene permiso a todos los procesos, que incluye el proceso para asignar permisos a otros usuarios.

El resto es como lo plantea BlueSteel. Cada módulo se accede mediante una opción de menú y en principio todos los menúes están inhabilitados con excepción de:

Código:
Archivo         
  Iniciar sesión
  --------------
  Salir
Al iniciar sesión, una vez validado el usuario, se lee la tabla de permisos filtrándola por el ID del usuario y se habilitan aquellos menús/submenús para los cuales se cuente con permiso.

Yo hago esto menú por menú, pero en realidad podría automatizarse asignando a cada TMenuItem.Tag el ID del proceso que corresponda y buscando, en un ciclo, dicho ID en la tabla de permisos.

No manejo propiamente perfiles aunque sí categorías de permisos, implementadas de forma rudimentaria:

Cada grupo de procesos, por ejemplo, Clientes, tiene asignado un ID centenario, digamos, 500. Los subprocesos tales como Alta de clientes, Modificación de Clientes, tienen IDs 501, 502, etc.

En el menú principal, hay un menú Clientes que tiene como submenús a Altas y Modificación.

Al leer los permisos, si el usuario no tiene el permiso 500, entonces omito todos los subpermisos. Si sí tiene el permiso 500, debo leer uno por uno los subpermisos para ver cuál submenú habilito y cuál no.

// Saludos

Última edición por roman fecha: 13-06-2008 a las 04:07:09.
Responder Con Cita
  #5  
Antiguo 13-06-2008
Avatar de Spynosa
Spynosa Spynosa is offline
Miembro
 
Registrado: nov 2004
Ubicación: Ecija - Sevilla
Posts: 99
Poder: 20
Spynosa Va por buen camino
podias probar estos componentes que son gratis
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Acceso por miles de usuarios simultaneo HomeCinema Firebird e Interbase 0 06-02-2007 11:38:23
acceso simultaneo varios usuarios Tabla interbase hibero Conexión con bases de datos 15 04-12-2006 00:21:16
Protección de acceso a usuarios jasensio Seguridad 1 02-10-2006 14:45:59
controlar acceso a un objeto desde diferentes threads derteo OOP 2 07-02-2006 20:16:36
permiso de acceso a usuarios jzginez Firebird e Interbase 6 06-10-2003 15:28:18


La franja horaria es GMT +2. Ahora son las 21:02:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi