Security Session 변경
- 작성자 :
- 박*규
- 작성일 :
- 2012-07-24 20:38:04
- 조회수 :
- 1,702
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
Spring Security Session을 변경하고 싶습니다. (/j_spring_security_check redirect 없이)
-----------------------------------------------------
PortLoginVO portLoginVO = (PortLoginVO) PortUserDetailsHelper.getAuthenticatedUser();
portLoginVO.setAgentCode((String)dto.get("selectAgentCode"));
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
PortUserDetails details = (PortUserDetails) authentication.getPrincipal();
details.setPortUserVO(portLoginVO);
SecurityContextHolder.clearContext();
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( details, authentication.getCredentials(), authentication.getAuthorities() );
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
HttpSession session = request.getSession();
session.setAttribute("SPRING_SECURITY_CONTEXT", SecurityContextHolder.getContext());
------------------------------------------------------
다음과 같이 처리 했더니 Redirect가 있기 전까진 변경되지 않다가
다음에 변경되는군요. Spring의 springSecurityFilterChain를 타야 변경이 되는 건가요?
사용자 정보가 변경되면 즉시 세션도 변경할 수 있는 방법이 있을까요?
-----------------------------------------------------
PortLoginVO portLoginVO = (PortLoginVO) PortUserDetailsHelper.getAuthenticatedUser();
portLoginVO.setAgentCode((String)dto.get("selectAgentCode"));
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
PortUserDetails details = (PortUserDetails) authentication.getPrincipal();
details.setPortUserVO(portLoginVO);
SecurityContextHolder.clearContext();
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( details, authentication.getCredentials(), authentication.getAuthorities() );
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
HttpSession session = request.getSession();
session.setAttribute("SPRING_SECURITY_CONTEXT", SecurityContextHolder.getContext());
------------------------------------------------------
다음과 같이 처리 했더니 Redirect가 있기 전까진 변경되지 않다가
다음에 변경되는군요. Spring의 springSecurityFilterChain를 타야 변경이 되는 건가요?
사용자 정보가 변경되면 즉시 세션도 변경할 수 있는 방법이 있을까요?
A
안녕하세요.. 박대규님..
요청하시는 부분은 Spring security의 내부 구현 방식에 긴밀히 연관되어 있는 부분이라..
저희가 가이드 해드릴 수 있는 부분이 아니라 판단됩니다.
(내부 spring security 부분의 구현을 정상적이지 않은 방법으로 활용하는 것은.. 이후 버전업이나 호환성 측면에서 바람직하지 않은 것 같습니다.)
참고로.. spring security 3.0의 경우는 UserAccountChangedEvent를 통해 변경하실 수 있으나.. 현재 표준프레임워크 적용 버전은.. 2.0.4 입니다..
그럼.. 즐거운 하루되십시오.
감사합니다.
요청하시는 부분은 Spring security의 내부 구현 방식에 긴밀히 연관되어 있는 부분이라..
저희가 가이드 해드릴 수 있는 부분이 아니라 판단됩니다.
(내부 spring security 부분의 구현을 정상적이지 않은 방법으로 활용하는 것은.. 이후 버전업이나 호환성 측면에서 바람직하지 않은 것 같습니다.)
참고로.. spring security 3.0의 경우는 UserAccountChangedEvent를 통해 변경하실 수 있으나.. 현재 표준프레임워크 적용 버전은.. 2.0.4 입니다..
그럼.. 즐거운 하루되십시오.
감사합니다.