공통컴포넌트 3.1 스프링 시큐리티에서 로그인 실패시 재로그인 화면이 깨지는 현상
- 작성자 :
- 조*형
- 작성일 :
- 2014-10-13 11:17:02
- 조회수 :
- 1,155
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
커스텀마이징한 제 프로젝트를 3.1환경으로 업그레이드하는 중
잘못된 암호로 로그인 시도했을 시 재로그인화면이 첨부된 그림처럼 두개의 로그인 창이 나옵니다.
그래서 공통컴포넌트 3.1 과 실행환경 3.1 에서 개발환경 3.1에서 egovframe 웹프로젝트을 생성해
공통 컴포넌트중에서 일반 로그인, 역활/권한관리 전부,게시판 기능 컴포넌트를 선택해 생성한 프로젝트에서도
같은 현상을 보이고 있습니다.
제 나름대로 분석한 바에 따르면 스프링 시큐리티에서 /uat/uia/egovLoginUsr.do에서 포워드하여 /uat/uia/actionLogin.do 에서 로그인 처리하는데 원인이 있는 것 같습니다.
참고로 스프링 시큐리티 설정은 원래 그대로입니다
<egov-security:config id="securityConfig"
loginUrl="/uat/uia/egovLoginUsr.do"
logoutSuccessUrl="/EgovContent.do"
loginFailureUrl="/uat/uia/egovLoginUsr.do?login_error=1"
accessDeniedUrl="/sec/ram/accessDenied.do"
dataSource="egov.dataSource"
jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP,
USER_ADRES, USER_EMAIL, USER_SE, ORGNZT_ID, ESNTL_ID,
(select a.ORGNZT_NM from COMTNORGNZTINFO a where a.ORGNZT_ID = m.ORGNZT_ID) ORGNZT_NM
FROM COMVNUSERMASTER m WHERE CONCAT(USER_SE, USER_ID) = ?"
jdbcAuthoritiesByUsernameQuery="SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY
FROM COMTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = ?"
jdbcMapClass="egovframework.com.sec.security.common.EgovSessionMapping"
requestMatcherType="regex"
hash="plaintext"
hashBase64="false"
concurrentMaxSessons="1"
concurrentExpiredUrl="/EgovContent.do"
defaultTargetUrl="/EgovContent.do"
/>
잘못된 암호로 로그인 시도했을 시 재로그인화면이 첨부된 그림처럼 두개의 로그인 창이 나옵니다.
그래서 공통컴포넌트 3.1 과 실행환경 3.1 에서 개발환경 3.1에서 egovframe 웹프로젝트을 생성해
공통 컴포넌트중에서 일반 로그인, 역활/권한관리 전부,게시판 기능 컴포넌트를 선택해 생성한 프로젝트에서도
같은 현상을 보이고 있습니다.
제 나름대로 분석한 바에 따르면 스프링 시큐리티에서 /uat/uia/egovLoginUsr.do에서 포워드하여 /uat/uia/actionLogin.do 에서 로그인 처리하는데 원인이 있는 것 같습니다.
참고로 스프링 시큐리티 설정은 원래 그대로입니다
<egov-security:config id="securityConfig"
loginUrl="/uat/uia/egovLoginUsr.do"
logoutSuccessUrl="/EgovContent.do"
loginFailureUrl="/uat/uia/egovLoginUsr.do?login_error=1"
accessDeniedUrl="/sec/ram/accessDenied.do"
dataSource="egov.dataSource"
jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP,
USER_ADRES, USER_EMAIL, USER_SE, ORGNZT_ID, ESNTL_ID,
(select a.ORGNZT_NM from COMTNORGNZTINFO a where a.ORGNZT_ID = m.ORGNZT_ID) ORGNZT_NM
FROM COMVNUSERMASTER m WHERE CONCAT(USER_SE, USER_ID) = ?"
jdbcAuthoritiesByUsernameQuery="SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY
FROM COMTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = ?"
jdbcMapClass="egovframework.com.sec.security.common.EgovSessionMapping"
requestMatcherType="regex"
hash="plaintext"
hashBase64="false"
concurrentMaxSessons="1"
concurrentExpiredUrl="/EgovContent.do"
defaultTargetUrl="/EgovContent.do"
/>
A
안녕하세요. 조재형님.
올려주신 부분만으로는 원인 파악이 어려울 것 같습니다.
우선 설정하신 정보에 의해 로그인이 필요한 경우 지정된 /uat/uia/egovLoginUsr.do URL로 forward가 아닌 redirect로 이동하며, 실제 로그인을 처리하는 부분과는 별도이기 때문에,
/uat/uia/egovLoginUsr.do를 처리하는 화면 상에 문제인 것 같습니다.
예를 들면 지정하신 로그인 화면 상에 다른 URL을 import하신 경우 import된 페이지 자체도 권한이 없다면, 해당 import 부분도 로그인 화면으로 이동하면서 2개의 로그인 화면을 포함할 수 있을 것 같습니다.
(이 경우 import된 URL에 대하여 권한롤 등록에서 제외시키시거나 ROLE_ANONYMOUS로 지정하시면 됩니다.)
그럼, 즐거운 하루되십시오.
감사합니다.
올려주신 부분만으로는 원인 파악이 어려울 것 같습니다.
우선 설정하신 정보에 의해 로그인이 필요한 경우 지정된 /uat/uia/egovLoginUsr.do URL로 forward가 아닌 redirect로 이동하며, 실제 로그인을 처리하는 부분과는 별도이기 때문에,
/uat/uia/egovLoginUsr.do를 처리하는 화면 상에 문제인 것 같습니다.
예를 들면 지정하신 로그인 화면 상에 다른 URL을 import하신 경우 import된 페이지 자체도 권한이 없다면, 해당 import 부분도 로그인 화면으로 이동하면서 2개의 로그인 화면을 포함할 수 있을 것 같습니다.
(이 경우 import된 URL에 대하여 권한롤 등록에서 제외시키시거나 ROLE_ANONYMOUS로 지정하시면 됩니다.)
그럼, 즐거운 하루되십시오.
감사합니다.