Error: Cannot invoke "jakarta.servlet.http.HttpSession.getAttribute(String)" because "session" is null

42 Views Asked by At

I have a Spring Boot application where I'm using HttpSession to store jwt tokens after login. In my AuthController, after successful login, I create a session and store the token in it. However, when I try to access the session in a subsequent request, specifically in the /decode endpoint, the session is null. (To display the logged user's name and email, I want to decode the token and get name and email from that.)

AuthController Code:

  @PostMapping("/login")
    public ResponseEntity<UserDto> login(@RequestBody CredentialsDto credentialsDto, HttpServletRequest request) {
        UserDto userDto = userService.login(credentialsDto);

        if (userDto == null) {
            return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
        }
        else {
            HttpSession session = request.getSession(true);
            session.setAttribute("token", userAuthenticationProvider.createToken(userDto));
            return ResponseEntity.ok(userDto);
        }
    }

@GetMapping("/decode")
    public ResponseEntity<?> decodeToken(HttpServletRequest request) {
        try {
            HttpSession session = request.getSession(false);

            if(session != null)
            {
                UserDto userDto = userAuthenticationProvider.decodeToken((String)session.getAttribute("token"));
                return ResponseEntity.ok(userDto);
            }
            else {
                System.out.println("Session is null");
                return ResponseEntity.ok(null);
            }

        } catch (JWTDecodeException e) {
            return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Error in decoding token");
        }
    }

What could be causing the session to be null in subsequent requests, and how can I resolve this issue?

Thank you for your help.

0

There are 0 best solutions below