Spring Boot implementa todo el proceso de verificación del registro de usuarios
En este artículo, usaremos Spring Boot para implementar un proceso básico de registro y verificación de cuentas de correo electrónico.
Nuestro objetivo es agregar un proceso de registro completo que permita a los usuarios registrarse, autenticar y conservar los datos del usuario.
Primero, necesitamos un DTO para incluir la información de registro del usuario. Este objeto debe contener la información básica que necesitamos durante el proceso de registro y verificación.
Ejemplo 2.1 Definición de UserDto
Tenga en cuenta que utilizamos la anotación estándar javax.validation - @NotBlank en los campos del objeto DTO.
@NotEmpty: Aplica a objetos CharSequence, Collection, Map y Array, no puede ser nulo y el tamaño del objeto relacionado es mayor que 0.
@NotBlank: Esta anotación solo se puede aplicar al tipo String. La cadena no es nula y su longitud (longitud recortada) después de eliminar los caracteres en blanco en ambos extremos es mayor que 0.
En los siguientes capítulos, también personalizaremos las anotaciones para verificar el formato de la dirección de correo electrónico y confirmar la contraseña secundaria.
El enlace de registro en la página de inicio de sesión lleva al usuario a la página de registro:
Ejemplo 3.1 Definición de RegistrationController
Cuando RegistrationController recibe la solicitud /usuario/ registro, crea un nuevo objeto UserDto, lo vincula al modelo y devuelve la página de registro registro.html.
A continuación, veamos la validación que realizará el controlador al registrar una nueva cuenta:
Para una verificación simple, usaremos @NotBlank para validar el objeto DTO.
Para activar el proceso de validación, usaremos la anotación @Valid en el Controlador para validar el objeto.
Ejemplo 4.1 registrarseUserAccount
A continuación, verifiquemos la dirección de correo electrónico para asegurarnos de que esté en el formato correcto. Crearemos un validador personalizado para esto y una anotación de validación personalizada: IsEmailValid.
Las siguientes son la anotación de verificación de correo electrónico IsEmailValid y el validador personalizado EmailValidator:
Ejemplo 4.2.1 Definición de la anotación IsEmailVaild
Ejemplo 4.2.2 Definición de EmailValidator
Ahora usemos la nueva anotación en nuestra implementación de UserDto.
También necesitamos una anotación y un validador personalizados para garantizar que la contraseña y los campos de Contraseña repetida en UserD coincidan.
Ejemplo 4.3.1 Definición de la anotación IsPasswordMatching
Tenga en cuenta que la anotación @Target indica que se trata de una anotación de nivel de tipo. Esto se debe a que necesitamos todo el objeto UserDto para realizar la validación.
Ejemplo 4.3.2 Definición de PasswordMatchingValidator
Ahora, aplique la anotación @IsPasswordMatching a nuestro objeto UserDto.
La cuarta comprobación que queremos implementar es verificar que la cuenta de correo electrónico ya existe en la base de datos.
Esto se hace después de validar el formulario y ponemos esta validación en UserService.
Ejemplo 4.4.1 UserService
UserService se basa en la clase UserRepository para comprobar si ya existe una cuenta de usuario con el mismo buzón en la base de datos. Por supuesto, no cubriremos la implementación de UserRepository en este artículo.
Luego continuamos implementando la lógica de persistencia en RegistrationController.
En el código anterior podemos encontrar:
1. Creamos un objeto ModelAndView, que puede guardar datos y devolver una Vista.
2. Si ocurre algún error durante el proceso de registro, regresará a la página de registro.
En esta sección, implementaremos un UserDetailsService personalizado para verificar las credenciales de inicio de sesión desde la capa de persistencia.
Comencemos por personalizar UserDetailsService.
Ejemplo 6.1.1 MyUserDetailsService
Luego, para habilitar realmente el MyUserDetailsService personalizado, también necesitamos agregar el siguiente código al archivo de configuración SecurityConfig:
Debido a limitaciones de espacio, no ampliaremos el archivo de configuración SecurityConfig en detalle aquí. En este punto, hemos completado un proceso básico de registro de usuario implementado por Spring Boot.