Web/Spring

[Spring Security] 스프링 시큐리티 에러 메시지 국제화

수짱수짱 2023. 12. 14. 09:32
해당 게시글은 "프로그래머스 데브코스 4기"의 팀 내 프로젝트 기록용으로 TECH BLOG에 직접 작성한 글입니다.

[문제 상황]

팀원이 작업하시면서 이런 문제가 발생했다고 하셨다!

그래서 직접 확인해 보니

로컬에서는 비밀번호를 잘 못 입력했을 때 “자격 증명에 실패하였습니다.” 였고 서버에서는 위와 같이 “Bad credentials”로 응답이 왔다..

왜 그럴까 생각을 해보았는데에..

 

계속 보니 로컬에서 오는 응답과 서버에서 오는 응답 이 둘의 의미가 같은 것 같았다.

그래서 어림짐작으로 로컬은 한국이고 서버는 영어로 되어있나..? 싶었는데 역시 맞았다

→ 근거는? 위 블로그를 보면서 “이는 Spring Security 자체에 국제화 메시지 처리가 되어 있기 때문” 이라는 말을 보았고 해당 파일을 직접 찾아보았다

 

KR 파일 4번째줄에 내가 응답받는 메시지가 있었다!

변수명은 AbstractUserDetailsAuthenticationProvider.badCredentials

 

EN 파일 4번째줄에는 서버에서 응답받는 Bad credentials 메시지가 있었다!

마찬가지로 AbstractUserDetailsAuthenticationProvider.badCredentials 의 변수명을 가졌다

 

결론

결국 서버와 로컬의 국제화 차이로 인한 언어가 다른 메시지가 전송된 것 이었다

서버와 로컬에서 다른 메시지가 아닌 똑같은 메시지를 전송하고 있는 것이 결론! .. 다행이다.

참고

나는 “자격 증명에 실패하였습니다”라는 메시지를 보내라고 설정한 적이 없다.

즉, default 메시지로 해당 파일(messages_ko_KR.properties)에서 찾아서 저렇게 전송되는 것이다.

default 메시지로 전송되는 것을 원하지 않는다면 커스텀 메시지 properties 파일을 만들어서 전송하고 싶은 메시지를 설정한 뒤 해당 메시지가 전송되도록 커스텀할 수도 있더라 → https://shinsunyoung.tistory.com/79


Reference

두 분 다 정말 아리가또..