4
respostas

Duvida autenticação

Boa tarde,

estou seguindo as aulas, e em paralelo tentando criar as mesmas funcionalidades mas com o Spring atualizado.

Alguém poderia me dizer porque este método de autenticação não funciona? Eu consigo cadastrar o usuário, porém não consigo autenticar, e nem utilizar o token para um demo controller.

https://github.com/pedroduartept/spring3-secutiry-jwt/tree/master/src/main/java/com/pedro/secutiry

Muito obrigado

4 respostas

Bom dia Duarte, tudo bem?

Fiz um clone do teu projeto e realizei um teste. Na classe SecurityConfiguration deixei assim.

.requestMatchers("/api/v1/auth/register").permitAll()

Fiz o cadastro e recebi o token, mas acho que essa logica esta equivocada, quando eu faço o cadastro no sistema ele não deveria me retornar o token só quando eu fizer login, pelo que vi é o método

@PostMapping("/authenticate")
    public ResponseEntity<AuthenticationResponse> register(@RequestBody AuthenticationRequest request){
        return ResponseEntity.ok(service.authenticate(request));
    }

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

Pegando o Token que foi gerado no /register eu usei para o /demon-controller, pois como falei antes apenas o /register estava liberado o resto só authenticando.

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

aqui eu deixei userDetails.getAuthorities() como null porque esta dando um java.lang.NullPointerException: Cannot invoke "com.pedro.secutiry.user.Role.name()" because "this.role" is null

UsernamePasswordAuthenticationToken(
                        userDetails,
                        null,
                       null
                );

Muito obrigado Alisson, eu ainda estou tento um erro na hora de tentar fazer a autenticação no Demo controller. Penso que seja pela Querry.

@Query(value = """ select t from Token t inner join User u\s on t.user.id = u.id\s where u.id = :id and (t.expired = false or t.revoked = false)\s """) List findAllValidTokenByUser(@Param("id") Integer id);

https://cdn1.gnarususercontent.com.br/1/1267077/b132e25c-5e72-4395-a1f3-255906627a86.png

Retorna uma lista mesmo?

List findAllValidTokenByUser(@Param("id") Integer id);

Qual o tipo de retorno dessa lista?

List<?>findAllValidTokenByUser(@Param("id") Integer id);

Recebo este erro na hora de tentar acessar o Demo Controller

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