Práctica del blog de Flask: implementación de funciones de inicio de sesión y registro
La función de registro de inicio de sesión Flask tiene una excelente extensión Flask-login, que podemos elegir implementar, pero para aprender, ¡elegimos temporalmente usar sesión en lugar de esta extensión de terceros!
Primero necesitamos mejorar la página html de inicio de sesión, la ruta es: app/auth app/auth/templates/log in html
Detalles del código:
De hecho, este código es para escribir un formulario para ingresar la cuenta y la contraseña. ¡El otro código redundante existe para implementar el estilo del formulario!
Lo que hay que tener en cuenta aquí es que el atributo de nombre debe establecerse en este formulario de entrada, porque el backend obtendrá el valor ingresado por el usuario en función de este atributo de nombre. ¡Todos deben aprender otros atributos!
La vista lógica del backend de la función de inicio de sesión, la ruta es: app/auth/views/auth.py.
Detalles del código: - request.method == 'POST ' para determinar si la solicitud actual está en modo de solicitud POST - error = Ninguno para inicializar la variable de error. Si la verificación de inicio de sesión falla, se enviará un mensaje de error a la página para avisar al usuario.
Este código primero consulta al usuario a través del nombre de usuario enviado por el usuario en la base de datos. Si el usuario no existe, devolverá Ninguno y un mensaje de error. Si el usuario existe, determina si la contraseña es correcta. Aquí, se usa un método check_password_hash() para comparar la contraseña de texto cifrado con la contraseña ingresada por el usuario, y se usa un método generate_password_hash() para cifrar la contraseña de texto sin formato y guardarla en la base de datos.
Este código es: si no se devuelve ningún mensaje de error, significa que el formulario enviado cumple con nuestros requisitos y la información del usuario existe en la base de datos, entonces solo necesitamos borrar la sesión y restablecer el user_id en la sesión. al ID de inicio de sesión actual.
Por lo tanto, antes de implementar la lógica de inicio de sesión y registro, se deben introducir estos dos métodos:
Aunque se ha implementado la función de inicio de sesión, actualmente no hay usuarios en nuestra base de datos, por lo que esto Es necesario implementar la función de registro de usuarios y agregar usuarios a la base de datos. La lógica general es que el usuario ingresa el nombre de usuario y la contraseña dos veces, primero determina si el usuario ya existe y, de ser así, solicita cambiar el nombre de usuario. Si no existe, crearemos la información del usuario en la base de datos, borraremos la sesión y restableceremos el valor de user_id a la identificación del usuario registrado, para lograr el propósito de iniciar sesión automáticamente después de un registro exitoso.
Primero necesitamos mejorar la página html de registro, la ruta es: app/auth/templates/register.
Este es el html de la página de registro. Averigüemos por nosotros mismos. Aquí, nos centramos en un mensaje que pasamos mediante flash() en la vista, que se recibe mediante el siguiente código en la plantilla.
Registre la vista lógica del backend de la función, la ruta es: app/auth/views/auth.py.
La lógica de este registro cubre básicamente los puntos de conocimiento que hemos aprendido en todos los capítulos anteriores. No explicaré el código uno por uno aquí. ¡Puedes comprender y mejorar tus comentarios tú mismo!
A través de la implementación de las funciones de inicio de sesión y registro, ya sabemos claramente que si un usuario inicia sesión en realidad se determina al juzgar si hay una ID de usuario en la sesión, por lo que para iniciar sesión, solo necesitamos Para borrar la ID de usuario de la sesión, aquí elegimos directamente borrar la sesión para implementar la función de inicio.
Bp.before_app_request() registra una función que se ejecuta antes de la función de vista, sin importar qué URL se solicite.
Primero verificará si la identificación del usuario está almacenada en la sesión, obtendrá los datos del usuario de la base de datos y los almacenará en g.user, que durará mientras dure la solicitud.
Después de registrar esta función, podemos usar el valor de retorno de g.user en el extremo derecho de la navegación base.html para determinar si el usuario ha iniciado sesión y muestra información diferente.
El centro de usuarios y el fondo de administración que implementaremos en el próximo capítulo deben tener permiso de acceso, y los permisos más básicos deben ser los usuarios que hayan iniciado sesión, por lo que debemos denegar el acceso a los usuarios que no hayan iniciado sesión. !
De hecho, la idea es muy sencilla. Dado que agregamos la información del usuario actualmente conectado al objeto G cuando llamamos a la información del usuario en la plantilla de implementación, solo necesitamos determinar si el valor de retorno de g.user es Ninguno para determinar si el usuario ha iniciado sesión.
En este punto, hemos completado los permisos básicos relacionados con el inicio de sesión y el registro del usuario. Tenga en cuenta que estas funciones de visualización están en el archivo app/auth/views/auth.py.