spring security 간소화 중 sessionExfiredUrl 작동 안되는 현상
- 작성자 :
- 박*원
- 작성일 :
- 2016-09-07 17:14:57
- 조회수 :
- 1,058
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
안녕하십니까.
간단 질문 하나 드립니다.
egovframe 3.5.1 프로젝트를 진행 중인데요.
세션 타임 아웃이 되었을 경우 spring-security 간소화 적용에 의해서
sessionExfiredUrl 로 redirect 되어야하는 것으로 알고 있는데,
실제 세션은 invalidate 되는데 화면은 redirect 되지 않는 현상입니다.
web.xml 설정
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
context-security.xml 설정
<egov-security:config id="securityConfig"
loginUrl="/Admin/Login.mbz"
logoutSuccessUrl="/Admin/Login.mbz"
loginFailureUrl="/Admin/Login.mbz"
accessDeniedUrl="/Admin/AccessDenied.mbz"
dataSource="mobiz.dataSource"
jdbcUsersByUsernameQuery="
SELECT
A.USERID, A.UNIQUEID, A.PASSWD, A.PASDATE, B.DUPINFO, A.AUTHORID, B.EMPLOYEECODE, B.NAME, B.SEX, B.POSITION, B.TEL, B.EMAIL,
C.DEPARTCODE, C.DEPARTFULLNAME AS DEPARTNAME
FROM TBL_MANAGER A INNER JOIN TBL_EMPLOYEE B
ON A.EMPLOYEECODE = B.EMPLOYEECODE
INNER JOIN (
SELECT /*+INDEX(TBL_DEPART INDEX_DEPART_PARENTCODE)*/
ROWNUM AS ORD, PARENTCODE, DEPARTCODE, RANK, SUBSTR(SYS_CONNECT_BY_PATH(DEPARTNAME,'>'),2) AS DEPARTFULLNAME, DEPARTNAME, DEPARTCALL, TASK
FROM TBL_DEPART
WHERE DEL = 'N'
START WITH PARENTCODE = '0000000000'
CONNECT BY PRIOR DEPARTCODE = PARENTCODE
ORDER SIBLINGS BY RANK
) C ON B.DEPARTCODE = C.DEPARTCODE
WHERE B.DEL = 'N'
AND UNIQUEID = ?"
jdbcAuthoritiesByUsernameQuery="
SELECT
UNIQUEID, AUTHORID AS authority
FROM TBL_MANAGER
WHERE UNIQUEID = ?"
jdbcMapClass="mobiz.component.SessionMapping"
requestMatcherType="regex"
hash="plaintext"
hashBase64="false"
concurrentMaxSessons="1"
concurrentExpiredUrl="/SessionOut.do"
defaultTargetUrl="/Admin/Main.mbz"
/>
로그를 찍어보면 HttpSessionEventPublisher 에 의한 이벤트는 발생합니다.
그런데 그 이후 세션 exfired에 대한 로그는 전혀 없고 화면또한 redirect 되지가 않네요.
무엇이 잘못된 것일까요? ㅠㅠ
간단 질문 하나 드립니다.
egovframe 3.5.1 프로젝트를 진행 중인데요.
세션 타임 아웃이 되었을 경우 spring-security 간소화 적용에 의해서
sessionExfiredUrl 로 redirect 되어야하는 것으로 알고 있는데,
실제 세션은 invalidate 되는데 화면은 redirect 되지 않는 현상입니다.
web.xml 설정
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
context-security.xml 설정
<egov-security:config id="securityConfig"
loginUrl="/Admin/Login.mbz"
logoutSuccessUrl="/Admin/Login.mbz"
loginFailureUrl="/Admin/Login.mbz"
accessDeniedUrl="/Admin/AccessDenied.mbz"
dataSource="mobiz.dataSource"
jdbcUsersByUsernameQuery="
SELECT
A.USERID, A.UNIQUEID, A.PASSWD, A.PASDATE, B.DUPINFO, A.AUTHORID, B.EMPLOYEECODE, B.NAME, B.SEX, B.POSITION, B.TEL, B.EMAIL,
C.DEPARTCODE, C.DEPARTFULLNAME AS DEPARTNAME
FROM TBL_MANAGER A INNER JOIN TBL_EMPLOYEE B
ON A.EMPLOYEECODE = B.EMPLOYEECODE
INNER JOIN (
SELECT /*+INDEX(TBL_DEPART INDEX_DEPART_PARENTCODE)*/
ROWNUM AS ORD, PARENTCODE, DEPARTCODE, RANK, SUBSTR(SYS_CONNECT_BY_PATH(DEPARTNAME,'>'),2) AS DEPARTFULLNAME, DEPARTNAME, DEPARTCALL, TASK
FROM TBL_DEPART
WHERE DEL = 'N'
START WITH PARENTCODE = '0000000000'
CONNECT BY PRIOR DEPARTCODE = PARENTCODE
ORDER SIBLINGS BY RANK
) C ON B.DEPARTCODE = C.DEPARTCODE
WHERE B.DEL = 'N'
AND UNIQUEID = ?"
jdbcAuthoritiesByUsernameQuery="
SELECT
UNIQUEID, AUTHORID AS authority
FROM TBL_MANAGER
WHERE UNIQUEID = ?"
jdbcMapClass="mobiz.component.SessionMapping"
requestMatcherType="regex"
hash="plaintext"
hashBase64="false"
concurrentMaxSessons="1"
concurrentExpiredUrl="/SessionOut.do"
defaultTargetUrl="/Admin/Main.mbz"
/>
로그를 찍어보면 HttpSessionEventPublisher 에 의한 이벤트는 발생합니다.
그런데 그 이후 세션 exfired에 대한 로그는 전혀 없고 화면또한 redirect 되지가 않네요.
무엇이 잘못된 것일까요? ㅠㅠ
A
안녕하세요. 표준프레임워크 센터 입니다.
센터측에서 배포는 spring security 간소화에서 concurrentExpiredUrl기능에 대한
정상적인 동작을 확인하였습니다.
공통컴포넌트 기준으로 테스트를 하였습니다.
테스트 방법이나 설정상에 문제가 있는거 같습니다.
제가 테스트를 진행한 절차는
1) A 계정으로 크롬으로 로그인
2) A 계정은으로 사파리로 로그인
3) 사용자가 로그인된 크롬 브라우저에 권한설정이 되어 있는페이지 클릭 및 이동시 > concurrentExpiredUrl 페이지로 이동 됩니다.
SessionOut.do에대한 권한 체크를 한번 해보시고 이상없으시면 변경하신 전체적인 설정을 점검 하셔야 될꺼 같습니다.
설정을 점검시 하단 설정간소화 위키를 참조 해주세요.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:server_security:xmlschema
감사합니다.
센터측에서 배포는 spring security 간소화에서 concurrentExpiredUrl기능에 대한
정상적인 동작을 확인하였습니다.
공통컴포넌트 기준으로 테스트를 하였습니다.
테스트 방법이나 설정상에 문제가 있는거 같습니다.
제가 테스트를 진행한 절차는
1) A 계정으로 크롬으로 로그인
2) A 계정은으로 사파리로 로그인
3) 사용자가 로그인된 크롬 브라우저에 권한설정이 되어 있는페이지 클릭 및 이동시 > concurrentExpiredUrl 페이지로 이동 됩니다.
SessionOut.do에대한 권한 체크를 한번 해보시고 이상없으시면 변경하신 전체적인 설정을 점검 하셔야 될꺼 같습니다.
설정을 점검시 하단 설정간소화 위키를 참조 해주세요.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:server_security:xmlschema
감사합니다.