섹션 5. 웹 기반 인가처리 DB 연동에서 AffirmativeBased 를 생성해서 사용할 때 AccessDeniedException 발생 시 메시지가 한글로 변환되는 현상
344
작성한 질문수 8
AffirmativeBased 객체에 대한 질문
한글 인코딩 오류
위 내용 모두 동일 내용이네요.
ch05-03 에서 섹션5와 섹션 6까지 많은 것을 구현하셔서 해당 내용에 대한 branch가 없네요. 선생님 github의 ch05-03a branch 에서 재현 되네요. 이 브랜치가 섹션 5에서 섹션 6까지 모두 구현된 소스 같아요.
ch05-03a branch 의 application.properties 에서 spring.profiles.active=pointcut 를 주석 처리 후 실행 시키면 실행이 되고 user 로 로그인한 다음에 메시지 페이지에 접근하면 재현 됩니다.
AffirmativeBased 클래스의 84번 줄에 break point 잡고 디버깅하면 messages.getMessage() 호출 후 AccessDeniedException 을 생성하여 throw 될 때 detailMessage를 보면 "Access is denied" 이 "접근이 거부되었습니다" 라고 변경되어 저장되네요.
왜 locale 문제가 발생하는지 잘 모르겠네요. 저는 영문으로 사용해야 하는데 이 원인이 해결되지 않으면 자원 관리에 대한 DB 연동 자체를 사용할 수 없을 것 같아요ㅠ
선생님 왜 그런지 도와주세요.
답변 1
1
네
저도 소스를 들여다 보면서 테스트 하고 있는데 기본적으로 LOCALE 이 ko_KR 로 되어 있어서 영문이 아닌 한글 메시지를 가지고 오고 있는데 이 부분을 변경하기 위해 시큐리티에서 별도의 API 를 제공하는지는 좀 더 봐야 할 것 같습니다.
한가지 발견한 것은 AffirmativeBased 클래스에서 setMessageSource() API 를 제공하고 있긴 한데 여기시 바로 LOCALE 를 변경할 수 있는 것은 아니었습니다.
아마 스프링 부트가 초기화 때 설정한 값을 그대로 사용하고 있는 것 같습니다.
public abstract class AbstractAccessDecisionManager
implements AccessDecisionManager, InitializingBean, MessageSourceAware {
protected MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor();
@Override
public void setMessageSource(MessageSource messageSource) {
this.messages = new MessageSourceAccessor(messageSource);
}
중략...
}
위 코드를 보시면 MessageSource 를 변경할 수 있는 메서드가 있습니다.
또 속성 중에 MessageSourceAccessor 가 있는데 이 클래스에서 LOCALE(ko_KR) 정보를 받아서 메시지를 출력해 주고 있습니다.
예측하기는 스프링 부트가 초기화 되면서 위 클래스들이 어떤 특정한 시점에 LOCALE 정보를 받아 실행하도록 되어 있을 것 같은데 이 부분을 어떤 방식으로 커스텀하게 변경하거나 설정할 수 있는지를 좀 더 살펴 봐야 할 것 같습니다.
스프링에서 LOCALE 설정 변경은 구글 검색을 하면 여러 참조할 수 있는 내용이 나오는데 샘플 코드를 일부 적용을 했는데 반영이 되지 않고 있어서 저도 조금 더 분석해보고 해결점이 찾아지면 다시 답변 드리도록 하겠습니다.
시큐리티 공부 버전 질문
0
175
1
[해결 방법] MethodSecurityConfig.customMethodSecurityMetadataSource() 호출하지 않는 이슈
0
186
1
AbstractSecurityInterceptor.class.beforeInvocation()를 2번 실행하는 경우
0
174
1
강의 코드가 왜이렇게 뒤죽박죽인가요...
0
249
1
메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..
0
236
1
파라미터값이 넘어가지 않습니다 ....
0
374
1
security filterChain 설정 질문이 있습니다.
0
332
1
소스 부분 질문 드립니다.
0
208
2
섹션4 7번 강의 문제가 있는거 같네요.
0
344
2
파일이 수시로 이름이 바껴있네요 ㄷㄷ
0
304
1
HttpSessionSecurityContextRepository를 사용안하는 문제
0
555
2
error , exception 이 잘 안됩니다.
0
282
2
thymeleaf tag 질문합니다.
0
196
2
버전업하면서 deprecated된 것들이 너무많아요
0
478
1
spring security 패치 관련
0
437
1
모바일을 사용할때 토큰말고 세션
0
846
2
DB 연동한 인가 부분에 대한 질문입니다!
0
264
1
Ajax방식도 똑같이 Session방식을 사용하는건가요?
0
307
1
Config 파일 생성 시 질문이 있습니다.
0
225
1
강사님 몇일동안 구글 검색만 100개 했는데도 이유를 모르겠습니다..
1
429
2
403 에러 뜹니다.
0
813
2
login_proc의 존재에 대한 간략한 설명입니다
0
276
1
top.html에 로그인 링크를 만들어서 로그인을 해봤습니다
0
283
2
안녕하세요. DB에 저장될 때 이해 안 가는 값이 있어서 질문드립니다!
0
189
1





