0

I have a method that need to logout user and also need to delete his refresh token.

This is how its look like:

    @PostMapping("/logout")
    public ResponseEntity<?> logoutPage(@RequestBody TokenDTO dto) {
    logger.error("I'm in method");

    String refreshTokenString = dto.getRefreshToken();
        if (jwtHelper.validateRefreshToken(refreshTokenString) && refreshTokenRepository.existsById(jwtHelper.getTokenIdFromRefreshToken(refreshTokenString))) {
            // valid and exists in db
            refreshTokenRepository.deleteById(jwtHelper.getTokenIdFromRefreshToken(refreshTokenString));

            return ResponseEntity.ok().build();
        }

        throw new BadCredentialsException("invalid token");

    }

As you can see I have logger.

This is inside Thymeleaf:

<form method="post" th:action="@{/api/auth/logout}">
<input type="submit" value="Logout">
</form>

When I trigger that button instead of deleting refresh token that is connected with user I'm getting next error:

java.lang.NullPointerException: null
at com.auth0.jwt.TokenUtils.splitToken(TokenUtils.java:15) ~[java-jwt-4.0.0.jar:4.0.0]
at com.auth0.jwt.JWTDecoder.<init>(JWTDecoder.java:37) ~[java-jwt-4.0.0.jar:4.0.0]
at com.auth0.jwt.JWTVerifier.verify(JWTVerifier.java:440) ~[java-jwt-4.0.0.jar:4.0.0]
at demo.tripadvisorapp.security.jwt.JwtHelper.decodeRefreshToken(JwtHelper.java:73) ~[classes/:na]
at demo.tripadvisorapp.security.jwt.JwtHelper.validateRefreshToken(JwtHelper.java:85) ~[classes/:na]
at demo.tripadvisorapp.security.api.AuthController.logoutPage(AuthController.java:127) ~[classes/:na]

This is jwtHelper.decodeRefreshToken

   private Optional<DecodedJWT> decodeRefreshToken(String token) {
    try {
        return Optional.of(refreshTokenVerifier.verify(token));
    } catch (JWTVerificationException e) {
        log.error("invalid refresh token", e);
    }
    return Optional.empty();
}

This is jwtHelper.validateRefreshToken

 public boolean validateRefreshToken(String token) {
    return decodeRefreshToken(token).isPresent();
}

And for AuthController.logoutPage I aready provided method above.

What cause this problem, what I'm doing wrong?

  • Does this answer your question? [Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported for @RequestBody MultiValueMap](https://stackoverflow.com/questions/33796218/content-type-application-x-www-form-urlencodedcharset-utf-8-not-supported-for) – Med Elgarnaoui Oct 05 '22 at 12:22
  • Hi, thanks for helping. Somehow after next app reload I got a method called, but now I'm getting another errors. Question is updated. Sorry. – Stefan Jankovic Oct 05 '22 at 12:27

0 Answers0