"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como personalizar o formulário de login no Spring Security para usar um banco de dados customizado.

Como personalizar o formulário de login no Spring Security para usar um banco de dados customizado.

Publicado em 31/07/2024
Navegar:754

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

Para personalizar o formulário de login no Spring Security para usar um banco de dados personalizado, você pode seguir estas etapas:

Crie um UserDetailsService personalizado:

Implemente a interface UserDetailsService para carregar detalhes do usuário do seu banco de dados personalizado.

Substitua o método loadUserByUsername para consultar seu banco de dados em busca dos detalhes do usuário.

Configurar Spring Security:

Na configuração do Spring Security, defina o bean UserDetailsService.

Configure o AuthenticationManager para usar seu UserDetailsService personalizado.

Personalize o formulário de login especificando o URL da página de login e o URL de processamento de login.

Implemente o formulário de login personalizado:

Crie um arquivo JSP ou HTML para o formulário de login personalizado.

Inclua campos de entrada para nome de usuário e senha e um botão de envio.

Use o URL de processamento de login especificado na configuração do Spring Security para enviar o formulário.

Aqui está um exemplo de implementação:

  1. Crie um UserDetailsService personalizado

a classe pública CustomUserDetailsService implementa UserDetailsService {
@Autowired
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 Spring Security

@Configuração
@EnableWebSecurity
classe pública SecurityConfig estende WebSecurityConfigurerAdapter {
@Autowired
private CustomUserDetailsService customUserDetailsService;

@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 o formulário de login personalizado

Crie um arquivo login.jsp (ou login.html) em seu diretório src/main/webapp/WEB-INF/views (ou local equivalente):




Conecte-se


Conecte-se




Nome de usuário:



Senha:


Conecte-se


Nome de usuário ou senha inválidos.
/c:se

Neste exemplo, o formulário de login é enviado para a URL /login, que é a URL de processamento de login especificada na configuração do Spring Security.

Seguindo estas etapas, você pode personalizar o formulário de login no Spring Security para usar um banco de dados personalizado para autenticação do usuário.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/fullstackjava/how-to-customize-the-login-form-in-spring-security-to-use-a-custom-database-20mh?1Se houver algum violação, entre em contato com [email protected] para excluir
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3