Access - Control de Seguridad en Access

 
Vista:

Control de Seguridad en Access

Publicado por Berenice (84 intervenciones) el 16/04/2007 17:36:20
Buen dia, tengo una situacion con Access, resulta que en mi trabajo se lleva todo el control en este programa, desde el Almacen, Contabilidad, Personal, todooo y funciona bien, controlamos la seguridad unicamente grabando el usuario de Win en las tablas... Pero se esta empezando a dar una situacion, hay veces que algunos usuarios usan las PC's de otros usuarios y la mayoria conocemos las contraseñas todos para entrar a Win, entonces me gustaria que me recomendaran de que manera puedo llevar el control de la seguridad para saber que usuario hizo cada cosa, la debo llevar independiente de Access? O me sirve la que Access me brinda? Lo que me a mi se me habia ocurrido es crear un pequeño modulo que lleve el control pero la verdad no logro aterrizarlo...

Que me recomiendan?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Control de Seguridad en Access

Publicado por Pepe (766 intervenciones) el 16/04/2007 21:02:00
Hola Berenice

Te voy a contar brevemente mi experiencia y como lo solucione en una aplicación que tenía que funcionar con distinto usuarios y dependiendo de la sección a la que pertenecían tenía unas condiciones de funcionamiento o otras.

El control de seguridad que facilita access, es bastante liosillo de hacer y si algún usuario sabe como conectarse a otro grupo de trabajo (archivo system.mdw) te la puede liar.

Sobre este asunto hace unos meses ya le contesté a una compañera del foro, si lo buscas lo podrás ver.

Después de darle alguna que otra vuelta al asunto decidí hacer lo siguiente:

Prepare una tabla de usuarios, donde se registraba el nombre, un código de empleado y la clave de acceso.

Prepare un formulario, que es el que se abre de inicio con dos campos independientes, en uno el usuario tienen que introducir su código de empleado, y en el otro su contraseña.

Con un botón de aceptar, abre otro formulario (en oculto) que localiza a ese empleado y si la clave coincide con la que ha puesto, se abre el formulario que te tenía para el menú y cierra el de inicio. En el caso de que la clave no coincida edita un mensaje de que la clave no es correcta, cierra el formulario que esta oculto y pone en blanco el campo de la clave del formulario de inicio.

Sofisticandolo un poquillo le puse un contador en el formulario de inicio y a la tercera vez que no coincida la clave, se cierra la aplicación.

Seguramente con conocimientos de código, se podrá hacer más facil, pero como dice otro compañero del foro al que admiro por los conocimientos que demuestra tener, "yo solo soy un albañil de la informatica" y solo conozco la herramienta, el tema lo solucioné de esta manera y lleva varios años funcionando de maravilla.

Si no hay nadie que te de otra solución, intenta ésta no es tan complicada como puede parecer y si necesitas alguna aclaración más ya sabes donde estoy.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por Enrique (1299 intervenciones) el 16/04/2007 22:38:51
Hola Berenice:
Después de leer detenidamente la explicación del compañero Pepe, soy de su misma opinión y coincido con él en la forma de hacer lo que necesitas, o sea que de momento te olvides de la Seguridad que incorpora Access porque es complicada si no se tienen suficientes conocimientos sobre el tema y te puedes complicar la vida.

La forma que te explica Pepe es prácticamente igual a un sistema que tengo para el acceso de Usuarios a una aplicación, con la excepción de que yo uso código VBA y conecto mediante Recordset Ado con la una Tabla donde están almacenados los nombres de usuarios y sus contraseñas, tambien en mi caso se hace una comparación y deben coincidir ambos y si es así, se cierra el formulario de acceso y queda el de inicio (el de Inicio debe ser Emergente y Modal y desactivarle el menú contectual).

Esto no es suficiente y se deben de añadir otros sistemas de protección como: Desactivar la tecla Shift para impedir saltarse el formulario de inicio, ocultar las Tablas para que no se puedan importar desde una base en blanco y averiguarte las contraseñas (lo último es más complicado de hacer), como mínimo esto.

Tambien se puede hacer que los nombres de los usarios y las fechas/horas queden registrados en una Tabla cuando realicen determinadas acciones en los registros (borrar, agregar, modificar, etc), para saber quien hace y deshace, pero lo preocupante y que no tiene solución es lo que comentas cuando dices más o menos "todos usan los Pc's de los demás y todos sabemos las contraseñas de los otros", si eso es así, no hay nada que hacer y no te sirve para nada la seguridad que incorpores.

No hace mucho puse aquí mismo un Link para descargar un ejemplo sencillo pero efectivo sobre este tema y que algunos recordarán; el archivo todavía está disponible en descarga, búscalo si quieres, en algunos de mis mensajes buscando por "Usuarios Contraseñas" o algo parecido, lo revisas y después si te interesa, le vamos incorporando opciones hasta conseguir lo que necesitas, pero como te digo, ahora mismo funciona básicamente como te dice Pepe, aunque con código.
Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por Berenice (84 intervenciones) el 16/04/2007 23:46:54
Gracias por sus respuestas, tambien coincido con ustedes en la forma que me dicen para controlar la seguridad, les planteare mi posicion: Lo que quiero hacer es una forma principal en la cual se pida el nombre de usuario y la contraseña del usuario (anteriormente les comentaba que la mayoria conocemos las contraseñas de Windos de los demas porque en ocasiones es necesario entrar a las Pc's, por motivos propios del trabajo, pero en este caso la contraseña que se asignara de Access si sera confidencial, no es tanto por el control de que entren personas ajenas, sino porque me interesa almacenar el usuario que hace cada transaccion, es decir si alguin borro algo, me interesa saber kien fue, hora, etc. , ahora que si alguien da su contraseña pues ese sera el problema de ese usuario y las consecuencias caeran sobre el...) Bueno el punto es que tengo 6 Bases de Datos Diferentes (Almacen, Contabilidad, Personal, Entrenamiento, Manufactura e Ingenieria). Para cada una de estas Bd's genero un archivo en el cual solo estan las tablas y otro en el cual se encuentran las las tablas vinculadas, formas, querys, macros, resportes, de tal manera que el usuario no pueda modificar la estructura de las tablas y por otros motivos de seguridad, entonces en total tengo 12 archivos, los 6 donde residen las estructuras de las BD's para cada Modulo (que el usuario no ve) y los otros 6 que son los que el usuario ve, que son la plataforma para utilizar el sistema. Estos modulos comparten mucha informacion a traves de tablas vinculadas...

Entonces mi duda es como puedo estructurar la manera de pedir usuario y contraseña de tal manera que pueda almacenarse en las tablas, segun el modulo al que el usuario accesse....

No veo problema alguno en hacer la forma donde se pondria la contraseña ni el hecho de almacenarlo en la tabla, el datalle que hace que me complique la existencia es como conservo el valor de lo campo "Usuario" a traves del modulo al cual accese.....

Me explique? Se me hace que cantinflie mucho, ojala y puedan ayudarme...

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por Pepe (766 intervenciones) el 17/04/2007 11:50:06
Para la primera duda, por lo que cuentas entiendo que dispones de 6 BD diferentes donde se encuentran las tablas necesarias para cada aplicación y 6 aplicaciones independientes que tienen sus tablas vinculadas a su BD correspondiente.

Si los usuarios son los mismos para las 6 aplicaciones, la tabla de usuarios con las claves la podrías poner en una de las 6 BD que contienen las tablas y luego en las 6 aplicaciones vincularlas.

Si no son los mismos usuarios para todas las aplicaciones, en cada BD pondría la tabla con los usuarios y en su aplicación respectiva la vincularía.

Sea de una manera o de otra, esto obligaría a teclear el usuario cada vez que entres en una de las 6 aplicaciones, y supongo que sería un tanto molesto.

Para evitar lo anterior no te quedaría más remedio que unir todas las aplicaciones y en función del usuario dejarle manejar unas o otras.

Para la segunda duda que te surge, te puedo contar que en mi chapucilla, yo mantengo abierto pero oculto el formulario que tiene como origen del registro la tabla de usuarios y utilizo el valor del campo usuario como una variable permanente, para introducirlo en el campo usuario de la tabla que corresponda cuando sea necesario.

Viendo la respuesta de Enrique es posible que te pueda dar alguna solución, haber que nos puede decir.

Saludos, Pepe
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por Enrique (1299 intervenciones) el 17/04/2007 19:03:41
Hola de nuevo Berenice:
Te digo como resuelvo yo este asunto en las aplicaciones que utilizo habitualmente, cuando los usuarios son los mismos.
Entiendo que cada aplicación tiene su propia Base de Datos donde solo están las Tablas (el BackEnd) y luego está la que hace de programa con los formularios, consultas, informes, módulos, etc. que es la que abren los usuarios (el FrontEnd). En un sistema de Red, el BackEnd está en una carpeta compartida del Servidor de Red y del FrontEnd cada usuario tiene una copia exacta en su disco duro local con las Tablas vinculadas al BackEnd de forma que todos conectan a la misma base de tablas (esto es más efectivo y rápido que abrir todos la misma aplicación aunque Access lo permite), hasta aquí todo normal, pero ahora viene la parte que te interesa, controlar los usuarios que entran, para ello lo que yo hago es crear una mdb independiente (Usuarios.mdb) solamente con la Tabla "tblUsuarios" (o el nombre que quieras darle), que guarda los Nombres de cada uno y su respectiva Contraseña, a esta mdb le pongo toda la seguridad posible (esto lo dejamos de momento) y luego en el FrontEnd de cada usuario (que realmente es el mismo solo que es una copia local), pongo dos Formularios: El de Inicio que es el que se establece en el menú Inicio de Access y se abre siempre el primero al ejecutar la aplicación, Maximizado en el Form_Load y con la Propiedad "Menú Contectual: No", éste una vez abierto, abre sobre él como Emergente y Modal el Formulario de Acceso donde hay que teclear el Usuario y Contraseña y que por código conecta con la Tabla "tblUsuarios" de la Base externa "Usuarios.mdb" .
Si hacen tres intentos fallidos de acceso, la aplicación se cierra y cuando el nombre de usuario y contraseña coinciden, se cierra el Form de Acceso y queda abierto el Form de Inicio, el cual SIEMPRE debe de quedar abierto y sobre él se abrirán el resto de objetos; pués bien, en este de Inicio pongo un cuadro de texto Independiente, "UsuarioActivo", que recoge el nombre de usuario justo antes de cerrarse el de Acceso y ahí tenemos siempre disponible el nombre de Usuario que se ha conectado para usarlo donde lo necesitemos (es lo mismo que dice Pepe, pero sin ocultar el formulario de inicio que nos servirá además como FormPrincipal del programa).
Cuando quiero que en un determinado registro se guarde el nombre del usuario que lo ha creado o modificado, así como la fecha y hora, simplemente le pongo por código:
txtUsuario = Form_FormularioInicio.UsuarioActivo
FechaHora = Date + Time
Lógicamente en cada Tabla que quieras controlar tienes que añadir estos dos campos. Tanto el Formulario de Acceso como el de Inicio, tienen que estar en cada una de las seis aplicaciones (FrontEnd), pero la Base con la Tabla de Usuarios y las Base de Tablas (los BackEnd) serán los mismos para todos.
¿ Crees que esto es complicado de hacer ?, pués te aseguro que no lo es, siempre que tengas unos míminos conocimientos de código VBA y además aquí estamos para ayudarte, tu diras........

Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por Berenice (84 intervenciones) el 17/04/2007 19:37:04
Gracias x la idea, es bastante logica y la verdad no se me habia ocurrido de esa manera, habia llegado hasta el hecho de hacer otra BD como tu lo mencionas y mi gran duda era conservar el nombre del usuario, pero obviamente si lo guardo en una caja de texto dentro de la forma principal pues no lo perdere y asi puedo usarlo cuando lo necesite... MUCHAS GRACIAS!!

Teoricamente comprendo la idea ... PERO tengo otras dudas con respecto a la programacion (La verdad tengo muy poca experiencia con Access):

En cada modulo debo de hacer una forma en la cual se pida el acceso al usuario , llamemosla "Login", cuando un usuario abre el FrontEnd de un modulo se abre la forma inicial, llamemosla "Main", entonces cuando el usuario ejecute el modulo se abrira la forma Main y esta a su vez abre sobre ella como Emergente y Modal a "Login" y que por código conecta con la Tabla "tblUsuarios" de la Base externa "Usuarios.mdb" . Como abro la forma como emergente y Modal? Y como le indico por codigo que se conecta a la tabla "TblUsuarios"?

Una vez que pueda resolver esto de abrir "Login" como emergente y conectarme por codigo a la tabla TblUsuarios del Modulo Usuario.mdb, a lo demas no le veo problema...

Voy a buscarle, pero te agradeceria que me dieras un norte...

Muchas gracias, esto es muy importante para mi, ya que con esto se solucionarian muchos conflictos que suceden en el sistema, puesto que sabriamos quien hace cada cosa... Asi los usuarios ya no se podran hacer lo occisos ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por Enrique (1299 intervenciones) el 17/04/2007 21:54:47
Has captado bien la idea. El Formulario de Acceso "Login" de ser un formulario pequeño y abrirlo centrado en la pantalla como Emergente y Modal y eso no es problema porque esas son propiedades que tienen todos los Formularios.
Emergente significa que se abre sobre el Form de Inicio, Modal, que no se puede acceder ni con el teclado ni con el ratón a nada fuera de él y Centrado por pura estética, revisa las propiedades de cualquier formulario y las verás. Tambien en las Propiedades verás una: Menú Contectual que debes de poner a No, para que no se pueda acceder al diseño pinchando sobre el formulario con el boton derecho del ratón.

La parte de conectar por código con la Tabla de los Usuarios/Contraseñas de la la Base Externa (que puede estár en un Servidor de Red o en cualquier carpeta del disco duro local), ya es más complicado, pero por eso no te preocupes porque mañana mismo te pongo aquí una base de ejemplo que lo hace y además te detallo paso a paso dentro del Editor de VBA para que sirve cada línea de código. Tambien te puedo indicar, pero más adelante, como hacerte un formulario para administrar los Nombres y Contraseñas de los usuarios: cambiar las contraseñas, dar de alta nuevos usuarios, eliminar usuarios y cambiar de usuario sin salir de la aplicación, etc.

Por supuesto que el formulario Login tienes que ponerlo en cada mdb (módulo como tu los llamas), porque son bases diferentes. Si pudieras hacer lo que te indicada Pepe de juntar las seis aplicaciones en una, no tendrías que hacerlo seis veces pero si son independientes unas de otras no te queda más remedio, así como registrarse en cada una al entrar.

Un saludo
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por Berenice (84 intervenciones) el 17/04/2007 22:19:26
Muchas gracias x todo... Voy a ir adelantando lo del formulario y todo lo ke pueda ir haciendo...

Espero con ansias tu ejemplo para poner fin a mi problema de seguridad...

Saludos y un gran abrazo desde Nogales, Sonora, Mexico... :-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por annys (6 intervenciones) el 20/07/2009 23:03:32
hola Berenice y Enrique, estuve leyendo el problema de Berenice, y exactamente necesito algo igual. El problema es q el ejemplo que coloco enrique no lo puede descargar ya que no aparece la ruta, es decir como si ya no existiera el link.

Por favor necesito toda la ayuda que me puedan brindar.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por Berenice (84 intervenciones) el 20/07/2009 23:09:38
Annys enviame un correo para enviarte el ejemplo con mucho gusto :D

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Control de Seguridad en Access

Publicado por JOSE (11 intervenciones) el 21/08/2009 17:01:03
Hola Berenice,

he estado leyendo todo cuanto estais explicando sobre la seguridad en bases de datos de ACCES, y la verdad es que estoy muy interesado en este tema. Por tanto me podrias enviar a mi dirección [email protected] el ejemplo que comentas y que además le has enviado a ANNYS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Control de Seguridad en Access

Publicado por Lolita (1 intervención) el 24/04/2007 09:50:04
Me informas donde coloco Enrique el código, tambien estoy necesitando esta información
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar