Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 코딩테스트 준비
- 개발자 취업
- cs 공부)준비
- Spring
- 항해99
- 자바
- Java
- GIT
- 배열
- 프로그래머스
- 정렬 알고리즘(sort algorithm)
- 99클럽
- wil
- 이진 탐색(binary search)
- css
- ArrayList
- 메서드
- 자료구조
- Entity
- 우선순위 큐(priorityqueue)
- Til
- 면접(java
- 코딩공부
- HTML
- aop
- 코딩문제
- 회고
- Grafana
- 코딩
- github
Archives
- Today
- Total
hayu's 개발 일지
[TIL]240308 트러블 슈팅: 로그인 성공 메세지 본문
로그인 후 성공 메세지 출력
문제
- 성공 메세지를 로그에 추가는 가능했지만, 성공 메세지를 반환해줄 때 반환이 안되는 문제.
이전 코드
// 로그인 성공 처리
@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 |