En el blog de esta semana, nos centraremos en el tema crucial de la autenticación. Para ilustrarlo, utilizaremos el ejemplo de una aplicación diseñada para redactar las evaluaciones anuales del rendimiento de los empleados. Esta aplicación permite a los usuarios acceder de forma segura a sus cuentas autenticándose con su correo electrónico y contraseña.
Aplicación de evaluación de rendimiento
Visión general de la autenticación
La autenticación es la piedra angular de toda aplicación web, ya que garantiza que sólo los usuarios autorizados puedan acceder a información confidencial o realizar acciones específicas. En nuestro ejemplo, el proceso de conexión es simple pero efectivo, demostrando como 4D Qodly Pro maneja la autenticación de manera segura y eficiente.
El proceso de Conexión
El formulario de conexión se encuentra en la página «login» y consiste en:
- Dos campos de entrada: vinculados al correo electrónico y a la contraseña de la fuente de datos.
- Un botón «Iniciar sesión»: activa el proceso de autenticación.
En Qodly Studio, hay disponibles otras plantillas de formularios predefinidas para la funcionalidad de inicio de sesión en la sección dedicada a las plantillas. Estas plantillas pueden personalizarse para adaptarse a los requisitos específicos de su aplicación.
Función: authentify()
Cuando el usuario hace clic en el botón «Iniciar sesión», se llama a la función «ds.authentify()» con el correo electrónico y la contraseña como parámetros.
La información del usuario, como el correo electrónico y la contraseña, se almacena en la base de datos dentro de la tabla «Employee». En la función «authentify()», se realiza una simple consulta a la base de datos para verificar la información.
A continuación, se muestra un código para ilustrar este proceso:
exposed Function authentify($email: Text; $password: Text) : Text
$employee :=This.Employee.query("Email = :1"; $email).first()
If ($employee#Null)
If (Verify password hash($password; $employee.Password))
Session.setPrivileges("usuario")
Web Form .setMessage("Autenticación correcta")
Else
Web Form .setError("Autenticación fallida")
End if
Else
Web Form .setError("Autenticación fallida")
End if
Gestión de privilegios de usuario
Antes de autenticar un usuario, es vital restringir el acceso a datos y funciones sensibles. Esta seguridad se garantiza mediante la gestión de privilegios.
En primer lugar, tenemos un privilegio denominado «none», que posee todos los derechos sobre la fuente de datos (ds), lo que garantiza un acceso completo a la base de datos. En particular, este privilegio no se asigna a ningún usuario, con lo que se mantiene un entorno seguro. Cuando se conceden derechos a un privilegio, se revocan automáticamente a todos los demás, con lo que se asegura eficazmente el sistema.
A continuación, añadimos un privilegio llamado «authentify». La opción «Promote» se asigna a la función «ds.authentify()». Esto significa que siempre que se llame a esta función, se aplicará automáticamente el privilegio «authentify».
A continuación, nos aseguramos de que los permisos necesarios para la autenticación se añaden a las clases de datos o a las funciones utilizadas. En nuestro ejemplo, asignamos los permisos «Read» y «Execute» a la clase de datos «Employee».
Por último, activamos la opción «Force login«. Esta opción permite controlar el número de sesiones web abiertas que requieren licencias 4D Client. También puede cerrar la sesión del usuario en cualquier momento para disminuir el número de licencias conservadas.
Este sistema de privilegios multinivel ayuda a prevenir el acceso no autorizado y garantiza un funcionamiento seguro de la aplicación.
Para obtener más información, consulte la entrada de nuestro blog: Forzar el inicio de sesión se convierte en el valor predeterminado para todas las autenticaciones REST.
Añadir una función de DESCONEXión
Para mejorar la experiencia del usuario y la seguridad, es importante ofrecer una opción de cierre de sesión. En nuestro ejemplo:
- Se coloca un botón de cierre de sesión en la esquina superior derecha de la página «Main».
- La acción «Logout» se añade a este botón en el evento «On Click».
Esto permite a los usuarios finalizar su sesión de forma segura, eliminando todo privilegio activo y protegiendo los datos confidenciales.
Pasos siguientes
La autenticación y la gestión de privilegios son fundamentales para crear aplicaciones web seguras. Para profundizar en las capacidades de la autenticación y la gestión de privilegios, consulte los siguientes recursos:
- Documentación sobre:
- Blogs sobre:
Lo animamos a que intente aplicar estos conceptos en sus propias aplicaciones. ¿Tiene preguntas o ideas? Únase al debate en el foro o comparta su opinión en los comentarios a continuación. Esté atento al próximo artículo de nuestra serie.