Acompanhando a aula e copiando o código de acordo com o que o professor demonstrava, me deparei que o método "configure()" não estava integrando com o banco e nem criando um usuário para mim, então busquei por outras soluções já que a forma que é demonstrada na aula foi DESCONTINUADA pelo Spring, portanto, após descobrir aqui nos tópicos como adaptar o arquivo de configuração do Spring Security, também descobri como criar usuários no banco via arquivo de configuração, segue o código:
package br.com.alura.mvc.mudi;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.provisioning.JdbcUserDetailsManager; import org.springframework.security.provisioning.UserDetailsManager; import org.springframework.security.web.SecurityFilterChain;
@Configuration @EnableWebSecurity public class SecurityConfiguration {
@Autowired
private DataSource datasource;
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((authz) -> authz.anyRequest().authenticated())
.formLogin(form -> form.loginPage("/login").permitAll()).logout(logout -> logout.logoutUrl("/logout"));
return http.build();
}
@Bean
public UserDetailsManager users() {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
UserDetails user = User.builder().username("[NOME_USUARIO]").password(encoder.encode("[SENHA]")).roles("ADM").build();
JdbcUserDetailsManager users = new JdbcUserDetailsManager(datasource);
users.createUser(user);
return users;
}
}
O problema é que como DEVTOOLS do Spring reinicia e roda o arquivo de configuração todas vez, dá erro de usuário duplicado porque tenta criar o usuário novamente, como o professor comentou, portanto eu comentei as linhas que instaciam o UserDetails e cria no banco, assim que o primeiro foi criado, porém se eu quiser outro usuário é só descomentar e, antes de salvar o arquivo, alterar os nomes de usuário e senha.
O método users() , porém, precisa estar declarado para ele recuperar os usuários do banco e autenticá-los.