Seguridad access

Hola antes que todo te quiero dar las gracias por tu tiempo y por darme la oportunidad de aprender más =)
Tengo una bdd en access 2003 y me gustaría que al iniciar la bdd te pidiera el usuario y contraseña. He leído pro allí que guardan los usuarios y contraseñas en tablas y que los verifican por formulario, pero la verdad es que no se como hacerlo =S, ¿ademas qué si los usuarios están en tablas como se les otrogan los permisos?
Muchas gracias ;D

1 Respuesta

Respuesta
1
Te lo pongo esquemático:
a) Crea una tabla con el nombre del usuario, una contraseña y un campo si/no que indique si es administrador o no.
b) Crea un formulario en el que aparezca un combo, cuyo origen de datos es la tabla con los nombres de usuario, y un cuadro de texto en el que se introduzca la contraseña. Este cuadro de texto es independiente. Además, un botón para aceptar.
c) Ese formulario es el único que se abre al comienzo de la base de datos. El usuario elige un nombre del combo, introduce la contraseña y presiona el botón.
d) El código del botón comprueba si coincide. Además, te recomiendo guardar en una variable global el nombre del usuario y si es o no administrador. Así, puedes permitir o denegar la entrada a determinados formularios.
e) Para dar de alta nuevos usuario, alguien que haya entrado como administrador podría entrar en la tabla indicada en a) y crear un nuevo nombre.
A ver si con estas indicacioens te sirven.
aaaa ok, una cosa. ¿Sabes cómo saber si coinciden o no?
Soy muy nuevo en VBA, si me pudieras ayudar seria genial =).
Saludos
Imaginate que el control donde introducen datos se llama ContrasenaIntroducida y el combo donde esta el usuario se llama Usuario. En la tabla indicada en a (llamada Usuarios) hay un campo NombreUsuario y otro Contraseña
Al pulsar el botón podrías calcular cual es la contraseña verdadera con algo así:
ContrasenaVerdadera=DLookup("[Contrasena]","Usuarios","[Contrasena]='" & Forms!FormularioEntrada.ContrasenaIntroducida & "'")
Solo tienes entonces que comparar el valor de ContrasenaVerdadera con ContrasenaIntroducida. Por ejemplo:
If ContrasenaVerdadera= ContrasenaIntroducida then
.......
else
.....
end if.
A oki, pero me surgió un problema, cree un combo pero no me muestra los nombre de usuariso existentes (puse que el origen era nombre de la tabla usuario). ¿O tengo que escribir algo más en VBA?
buena respuesta ;D
Saludos
Ya se com hacerlo, pero si selecciono que el origen de mi tabla es la tabla Usuarios (nombre, pass) no me deja seleccionar del combobox =S. ¿Qué puedo hacer en ese caso?
saludos y muchas gracias por tu tiempo nuevamente =)
La propiedad "origen del control" del combo debe estar en blanco. La propiedad Origen de la fila es en la que le dices de donde vienen los datos que se muestran.
¿Qué significa que no te deja seleccionar? ¿Al desplegar aparecen datos? ¿Y cuándo eliges uno que te pone? ¿Aparece después en el combo?
Lo que me pasaba era que si ponía el origen de control con la tabla donde estaban los datos no me dejaba seleccionar de la lista desplegable, pero lo deje en blanco y todo se soluciono. ANtes tenia puesto en origen de fila y origen de registro, por eso no me dejaba seleccionar nada, solo ver.
Una pregunta, ¿no hay alguna manera más fácil para manejar l seguridad y los usuarios en access?, es decir, que access te ayude a configurarlos y que al iniciar tu base de datos te pida el usuario y contraseña (cada usuario posee sus propias limitaciones, a excepción del administrador que posee todos los permisos)
Hice una tabla Usuario: user, pass, admin
user= texto
pass=testo
admin=si/no
El login ya esta listo ya que al ingresar la contraseña correcta me desplegá un mensaje "correcto" y cuando es incorrecta me desplegá un msgbox("incorrecto")
¿Me dijiste que hiciera una variable globlal para guardar el usuario y de este modo ver si puedo acceder a algún formulario no?
Pero: Donde declaro la variable globlal (¿cómo se delacara?)? ¿En el mismo formulairo de inicio de sesión?
¿Y cómo voy a limitar que un usuario vea las tablas y pueda modificarlas (en modo diseño)?
Me interesa que allan dos tipos de usuarios
un administrador (que posee todos los permisos)
y un usuario normal que puede agregar, eliminar, actualizar, y que pueda ver lo que hay en al tabla mediante una consulta (que yo mismo creare).
muchas gracias por tu tiempo, saludos =)
¿Cómo tu dijiste puedo limitar mediante una variable global que el usaruario pueda entrar o no a ciertos formularios (ya lo hice) pero como puedo limitar que entre a las tablas y las modifique (en vista de diseño)?... ¿Esto no se si se pueda hacer pero hay una forma de que el usuario no entre a la vista diseño del formulario? Para que no entre al VBA
La variable global la puedes declarar con una macro. Hay una instrucción que declara variables globales. Basta que le des un nombre y la expresión (que será un vinculo a un cuadro de texto del formulario de entrada) y ya te guarda el nombre y valor durante toda la ejecución.
Pero me tienes que perdonar porque acabo de ver que tu bd esta en Access 2003 y esta versión si tiene un sistema propio de control de usuarios llamado ULS (User-Level Security). Como yo trabajo con 2007 y 2010 y en estos han quitado este sistema, no lo considero por defecto. En resumen, las BD creadas con 2003 (extensión *.mdb) pueden utilizar eso. Si la abres con el 2007 o 2010 (Y NO LA CONVIERTES EN EL NUEVO FORMATO *. ACCDB) podrás seguir usándolo.
Te recomiendo estos artículos:
http://office.microsoft.com/es-hn/access-help/introduccion-a-la-seguridad-en-access-mdb-HP005188226.aspx
http://msdn.microsoft.com/en-us/library/bb421308%28v=office.12%29.aspx (ingles)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas