spring security SavedRequest 관련
- 작성자 :
- 이*서
- 작성일 :
- 2014-09-17 09:38:14
- 조회수 :
- 1,687
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하세요.
전자정부 프레임워크 3.0 버전, spring security 3.2.4 버전으로 개발중입니다.
인증처리를 완료한 이후에 이전 url로 넘어가기 위해서
RequestCache requestCache = new HttpSessionRequestCache();
SavedRequest savedRequest = requestCache.getRequest(request, response);
다음과 같은 처리를 해 주었는데
savedRequest가 항상 null이 나옵니다. 구글링을 하여 다른 조치를 취해봐도 null이 나오든데
각 페이지별로 페이지를 저장할 필요없이 security에서 관리해주는거 같은데
따로 저장을 해줘야 하나요?
전자정부 프레임워크 3.0 버전, spring security 3.2.4 버전으로 개발중입니다.
인증처리를 완료한 이후에 이전 url로 넘어가기 위해서
RequestCache requestCache = new HttpSessionRequestCache();
SavedRequest savedRequest = requestCache.getRequest(request, response);
다음과 같은 처리를 해 주었는데
savedRequest가 항상 null이 나옵니다. 구글링을 하여 다른 조치를 취해봐도 null이 나오든데
각 페이지별로 페이지를 저장할 필요없이 security에서 관리해주는거 같은데
따로 저장을 해줘야 하나요?
A
안녕하세요. 이동서님.
확인 결과, HttpSessionRequestCache 객체가 새롭게 생성되는 방식이 아닌 Spring Security 내부(ExceptionTranslationFilter)에서 생성된 객체를 사용해야 합니다.
다만, 해당 객체가 외부에서는 참조될 수 있도록 되어 있지 않아서 HttpSessionRequestCache가 내부적으로 SavedRequest정보를 저장하는 방식을 직접 세션으로부터 참조하는 방식으로 활용하셔야 할 것 같습니다.
사용 방법은 다음과 같습니다.
SavedRequest savedRequest = (SavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUES");
추가적으로 Spring Security 내부 소스를 참조한 방식이기 때문에 향후 버전 업그레이드 시에 사용 방식이 변경될 수 있음을 인지해 주시면 되실 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
확인 결과, HttpSessionRequestCache 객체가 새롭게 생성되는 방식이 아닌 Spring Security 내부(ExceptionTranslationFilter)에서 생성된 객체를 사용해야 합니다.
다만, 해당 객체가 외부에서는 참조될 수 있도록 되어 있지 않아서 HttpSessionRequestCache가 내부적으로 SavedRequest정보를 저장하는 방식을 직접 세션으로부터 참조하는 방식으로 활용하셔야 할 것 같습니다.
사용 방법은 다음과 같습니다.
SavedRequest savedRequest = (SavedRequest) session.getAttribute("SPRING_SECURITY_SAVED_REQUES");
추가적으로 Spring Security 내부 소스를 참조한 방식이기 때문에 향후 버전 업그레이드 시에 사용 방식이 변경될 수 있음을 인지해 주시면 되실 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.