"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo personalizar el formulario de inicio de sesión en Spring Security para usar una base de datos personalizada.

Cómo personalizar el formulario de inicio de sesión en Spring Security para usar una base de datos personalizada.

Publicado el 2024-07-31
Navegar:728

How to customize the login form in Spring Security to use a custom database.

Para personalizar el formulario de inicio de sesión en Spring Security para usar una base de datos personalizada, puede seguir estos pasos:

Crear un servicio de detalles de usuario personalizado:

Implemente la interfaz UserDetailsService para cargar los detalles del usuario desde su base de datos personalizada.

Anule el método loadUserByUsername para consultar su base de datos para obtener los detalles del usuario.

Configurar Spring Security:

En su configuración de Spring Security, defina el bean UserDetailsService.

Configure AuthenticationManager para utilizar su servicio de detalles de usuario personalizado.

Personalice el formulario de inicio de sesión especificando la URL de la página de inicio de sesión y la URL de procesamiento de inicio de sesión.

Implementar el formulario de inicio de sesión personalizado:

Cree un archivo JSP o HTML para el formulario de inicio de sesión personalizado.

Incluya campos de entrada para el nombre de usuario y la contraseña, y un botón de envío.

Utilice la URL de procesamiento de inicio de sesión especificada en la configuración de Spring Security para enviar el formulario.

Aquí hay un ejemplo de implementación:

  1. Crear un servicio de detalles de usuario personalizado

la clase pública CustomUserDetailsService implementa UserDetailsService {
@Autocableado
JdbcTemplate privado jdbcTemplate;

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    String query = "SELECT * FROM users WHERE username = ?";
    User user = jdbcTemplate.queryForObject(query, new Object[]{username}, new UserRowMapper());
    if (user == null) {
        throw new UsernameNotFoundException("User not found");
    }
    return user;
}

}

  1. Configurar seguridad de Spring

@Configuración
@EnableWebSecurity
la clase pública SecurityConfig extiende WebSecurityConfigurerAdapter {
@Autocableado
privado CustomUserDetailsService personalizadoUserDetailsService;

@Autowired
private PasswordEncoder passwordEncoder;

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(customUserDetailsService)
        .passwordEncoder(passwordEncoder);
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
            .antMatchers("/login").permitAll()
            .anyRequest().authenticated()
        .and()
        .formLogin()
            .loginPage("/login")
            .loginProcessingUrl("/login")
            .defaultSuccessUrl("/welcome")
            .failureUrl("/login?error")
            .permitAll();
}

}

  1. Implementar el formulario de inicio de sesión personalizado

Cree un archivo login.jsp (o login.html) en su directorio src/main/webapp/WEB-INF/views (o ubicación equivalente):




Acceso


Acceso




Nombre de usuario:



Contraseña:


Acceso


Usuario o contraseña invalido.
/c:si

En este ejemplo, el formulario de inicio de sesión se envía a la URL /login, que es la URL de procesamiento de inicio de sesión especificada en la configuración de Spring Security.

Al seguir estos pasos, puede personalizar el formulario de inicio de sesión en Spring Security para usar una base de datos personalizada para la autenticación del usuario.

Declaración de liberación Este artículo se reproduce en: https://dev.to/fullstackjava/how-to-customize-the-login-form-in-spring-security-to-use-a-custom-database-20mh?1Si hay alguno infracción, comuníquese con [email protected] para eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3