hayu's 개발 일지

[TIL]240308 트러블 슈팅: 로그인 성공 메세지 본문

프레임워크/spring

[TIL]240308 트러블 슈팅: 로그인 성공 메세지

hayu00 2024. 3. 8. 21:19

로그인 후 성공 메세지 출력

문제

- 성공 메세지를 로그에 추가는 가능했지만, 성공 메세지를 반환해줄 때 반환이 안되는 문제.

 

이전 코드

// 로그인 성공 처리
    @Override
    protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {

        // 인증 결과에서 사용자 정보와 권한(Role) 추출
        String email = ((UserDetailsImpl) authResult.getPrincipal()).getUsername();
        UserRoleEnum role = ((UserDetailsImpl) authResult.getPrincipal()).getUser().getRole();
        // JWT 토큰 생성
        String token = jwtUtil.createToken(email, role);
        // HTTP 응답 헤더에 JWT 토큰 추가
        response.addHeader(JwtUtil.AUTHORIZATION_HEADER, token);

        // 로그인 성공 메시지를 로그에 출력
        log.info("사용자 '{}'의 로그인 성공", email);

        // void 일때 반환되는 값을 쓰고 싶을때 사용 (throws IOException, ServletException도 위에 기재해야한다)
        response.getWriter().write("로그인을 완료했습니다.");

    }

원인

- 한글 인코딩이 안되는 문제였다.

해결방안

- 한글 인코딩이 되는 코드를 넣었다.

 

해결 후 코드

// 로그인 성공 처리
    @Override
    protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {

        // 인증 결과에서 사용자 정보와 권한(Role) 추출
        String email = ((UserDetailsImpl) authResult.getPrincipal()).getUsername();
        UserRoleEnum role = ((UserDetailsImpl) authResult.getPrincipal()).getUser().getRole();
        // JWT 토큰 생성
        String token = jwtUtil.createToken(email, role);
        // HTTP 응답 헤더에 JWT 토큰 추가
        response.addHeader(JwtUtil.AUTHORIZATION_HEADER, token);

        // 로그인 성공 메시지를 로그에 출력
        log.info("사용자 '{}'의 로그인 성공", email);

        // 한글을 인코딩할 때 발생하는 문제를 해결하기 위한  UTF-8 인코딩을 설정 코드
        response.setCharacterEncoding("UTF-8");

        // void 일때 반환되는 값을 쓰고 싶을때 사용 (throws IOException, ServletException도 위에 기재해야한다)
        response.getWriter().write("로그인을 완료했습니다.");

    }

 

회고

- 아직은 초보라서 어떤 코드를 넣어야 내가 원하는 기능이 되는지 아는게 어려운 것 같다. 그래도 이렇게 하나하나 문제를 잡아가면 모르는 문제는 줄어들고 아는 코드는 늘어날 것이라고 생각한다. 

- 한글로 반환할 때 인코딩 코드가 필요하다는 것을 알게되었다. 

'프레임워크 > spring' 카테고리의 다른 글

[TIL]240313 Builder Pattern  (0) 2024.03.13
[TIL]240312 트랜잭션(transaction)  (0) 2024.03.12
[TIL]240307 영속성 컨텍스트  (1) 2024.03.07
[TIL]240304 스프링 MVC 와 Front Controller  (0) 2024.03.04
[TIL]240302 IoC / DI  (0) 2024.03.02