Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não consigo efetuar o login

Após inserir o BCryptPasswordEncoder, ao fazer o teste utilizando o System.out.println(new BCryptPasswordEncoder().encode("123456")), toda saída no console da senha criptografada é diferente. Ao tenta realizar o login no localhost ele da o retorno com bad cedentials.

Saídas no console para a mesma senha: $2a$10$nRDuvoNOAMzR1l0oqzP0kehEFrpTaYzwK1ttxqokZUHZst34k5cIS $2a$10$MHvBaN5eHtk/9hKeU3v0V.fjPAc69ZLcbj2UMETmX4rLf8D7myayq $2a$10$O9Guo.3bvmwJJvG0K4IyOesbYbgcnoKpLuCWTS6jSCLcBWMeKpjFy

Código da classe SecurityConfigurations

package br.com.alura.forum.config.security;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@EnableWebSecurity
@Configuration
public class SecurityConfigurations extends WebSecurityConfigurerAdapter {

    @Autowired
    private AutenticacaoService autenticacaoService;

    // Configurações de Autenticação. Configs de acesso, login...
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(autenticacaoService).passwordEncoder(new BCryptPasswordEncoder());
    }

    // Configurações de Autorizações. Ulr, quem pode acessar cada ulr, perfil de acesso...
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
        .antMatchers(HttpMethod.GET, "/topicos").permitAll()
        .antMatchers(HttpMethod.GET, "/topicos/*").permitAll() //"*" significa o {id} (qualquer outra coisa)
        .anyRequest().authenticated() // pra qualquer outra reequisição precisa estar autenticado
        .and().formLogin();
    }

    // Configurações para recusos estáticos(js, css, imagens, etc...)
    @Override
    public void configure(WebSecurity web) throws Exception {

    }

    //public static void main(String[] args) {
    //    System.out.println(new BCryptPasswordEncoder().encode("123456"));
    //}
}
2 respostas

Oi Tiago,

O Hash sai diferente mesmo, pois o BCryptPasswordEncoder utiliza um salt dinamico para gerar o hash da senha. Entretanto internamente ele consegue verificar se a senha está correta, mesmo com o hash diferente.

Confere se no seu arquivo data.sql você trocou a senha para a versão com hash.

solução!

Obrigado pela resposta Rodrigo. Acabei conseguindo resolver em algumas aulas mais pra frente, aonde ao comparar o arquivo baixado com o meu vi que esqueci um return em um método. Consegui resolver. Obrigado.