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

Gerando tokens JWT

Ao tentar Logar Estou recebendo essa mensagem:

"class jdk.proxy4.$Proxy131 cannot be cast to class med.voll.api.domain.usuario.Usuario (jdk.proxy4.$Proxy131 is in module jdk.proxy4 of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @61a2839; med.voll.api.domain.usuario.Usuario is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @61a2839)",

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

Oi!

Manda aqui o código das suas classes: Usuario, SecurityConfigurations e AutenticacaoService

public class Usuario implements UsuarioDetalhes{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String login;
    private String senha;

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return List.of(new SimpleGrantedAuthority("ROLE_USER"));
    }

    @Override
    public String getPassword() {
        return senha;
    }

    @Override
    public String getUsername() {
        return login;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }



    public Usuario(UserDTO dados) {
        this.login = dados.login();
        this.senha = dados.senha();
    }

    public void  setSenha(String senha) {
        BCryptPasswordEncoder criptografar = new BCryptPasswordEncoder();
        String senhaCriptografada = criptografar.encode(senha);
        this.senha = senhaCriptografada;
    }
}
public class SecurityConfiguraions {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        return http.csrf(csrf -> csrf.disable())
                .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
                .build();
    }

    @Bean
    public AuthenticationManager authenticationManager(AuthenticationConfiguration configuration) throws Exception {
        return configuration.getAuthenticationManager();
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

}
public class AutenticacaoService implements UserDetailsService {

    @Autowired
    private UsuarioRepository repository;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        return repository.findByLogin(username);
    }
}
solução!

Confere sua classe Usuario, pois no código que você mandou ela está implementando a interface: implements UsuarioDetalhes

Não sei se foi o navegador que traduziu quando você colou o código, pois a interface correta é do Spring e se chama UserDetails.

Era isso mesmo mestre, ele importou a usuarioDetalhes , muito obrigado!