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

Problemas com Spring Security

Olá, estou seguindo as aulas de Spring MVCII, porém travei na 4.3. O Security não está identificando o meu email e senha cadastrados no MySQL. Meu código está igual ao dos vídeos, já detonei meu banco de dados várias vezes e tentei várias coisas mas sempre recebo essa mensagem:

Your login attempt was not successful, try again. Reason: Bad credentials

No console do Eclipse, esta assim:

Hibernate: select usuario0.email as email1_3, usuario0.nome as nome2_3, usuario0.senha as senha3_3 from Usuario usuario0 where usuario0.email=?

Hibernate: select roles0.Usuario_email as Usuario_1_3_0, roles0.roles_nome as roles_no2_4_0, role1.nome as nome1_2_1 from UsuarioRole roles0 inner join Role role1 on roles0.rolesnome=role1.nome where roles0_.Usuario_email=?

8 respostas

Oi Isaias,

Os sql parecem normais. Poderia colocar seu código no github e nos passar o link? Mesmo parecendo estar igual, muitas vezes fica um detalhe ou outro que deixamos passar.

Abraço,

Olá prof. Paulo,

Segue o link para o github

https://github.com/isaiasgomes/spring

Como pode ver meu projeto não é exatamente igual ao da casa do código, mas utiliza a mesma base.

Oi Isaias,

Realmente parece tudo certo. Será que os dados no seu banco de dados estão corretos?

Tente rodar as querys acima no banco, substituindo a interrogação pelo login do usuário para ver se funciona.

Os dados que usei no vídeo foram:

Login: admin@casadocodigo.com.br

Senha: $2a$10$lt7pS7Kxxe5JfP.vjLNSyOXP11eHgh7RoPxo5fvvbMCZkCUss2DGu

Role: ROLE_ADMIN

No meu caso eu trocaria a ? por:

select usuario0.email as email1_3, usuario0.nome as nome2_3, usuario0.senha as senha3_3 from Usuario usuario0 where usuario0.email='admin@casadocodigo.com.br'

Na senha, tenha cuidado para que não vá espaços em branco ou mesmo caracteres estranhos que as vezes vão no copy/paste.

Veja se isso ajuda.

Abraço

Eu troquei o login e a senha do banco de dados...

login: admin@casadocodigo.com.br

senha: admin

Ele não reconhece

Olá, tentei rodar as duas querys criadas pelo hibernate no meu mysql...

meu login é : admin@smartrent.com.br

select usuario0.email as email1_3, usuario0.nome as nome2_3, usuario0.senha as senha3_3 from Usuario usuario0 where usuario0.email= 'admin@smartrent.com.br';

Resultado :

Email13: admin@smartrent.com.br

Nome23: Administrador

Senha33: admin

select roles0.Usuario_email as Usuario_1_3_0, roles0.roles_nome as roles_no2_4_0, role1.nome as nome1_2_1 from UsuarioRole roles0 inner join Role role1 on roles0.rolesnome=role1.nome where roles0_.Usuario_email='admin@smartrent.com.br'

Resultado:

Usuario1_3_0: admin@smartrent.com.br

Rolesno2_4_0: ROLE_ADMIN

Nome12_1: ROLE_ADMIN

Não sei se está tudo ok, parece que sim

solução!

Isaias,

acho que você salvou no seu banco de dados no campo senha texto puro, 'admin', experimente salvar:

$2a$10$g8x41tFLZTenQeGriW7bbu2yHLWCGQ94nKqDBuZyIIfJKbOJ2fXQK

que é um dos valores gerados para 'admin' pelo BCryptPasswordEncoder().

Acredito que o problema estava aí, estava salvo 'admin'. Ao tentar o login, o spring pega a senha digitada, no caso admin, criptografa e compara as duas já criptografadas.

Opa Vinícius... Valeu cara, você resolveu meu problema. Estava desconfiado disso , pois na aula o prof. coloca a senha já criptografada no banco. Agora vou tentar adicionar um método para cadastrar novos funcionários com senhas criptografadas no banco, utilizando o BCryptPasswordEncoder(). Obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software