중복 로그인 에러 문의 - 수정
- 작성자 :
- 이*규
- 작성일 :
- 2019-11-29 17:56:21
- 조회수 :
- 3,237
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요
egovframework 3.8.0버전을 사용하고 있으며 중복로그인시 로그인 화면으로 이동되지 않고 아래와 같은 오류가 발생됩니다.
확인좀 부탁드립니다.
심각: Servlet.service() for servlet [dispatcher] in context with path [] threw exception
java.lang.NullPointerException
at org.springframework.security.web.session.ConcurrentSessionFilter$1.onExpiredSessionDetected(ConcurrentSessionFilter.java:107)
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:145)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
####
내용 추가.
####
다른분들껀 바로바로 완료가 뜨는데 제것만 답변이 안달리네요.
저와 같은 증상으로 문의된 내용(https://www.egovframe.go.kr/uss/olh/qna/QnaInqireCoUpdt.do?qaId=QA_00000000000017825&menu=5&submenu=3)이 있어서
확인하였지만 답변이 "확인후 연락처로 연락드린다"고 되어 있어 조치 내용이 확인 되지 않아 같은 증상으로 문의올린거였습니다.
조치된 내용을 공유해 주셨으면 좋겠습니다.
egovframework 3.8.0버전을 사용하고 있으며 중복로그인시 로그인 화면으로 이동되지 않고 아래와 같은 오류가 발생됩니다.
확인좀 부탁드립니다.
심각: Servlet.service() for servlet [dispatcher] in context with path [] threw exception
java.lang.NullPointerException
at org.springframework.security.web.session.ConcurrentSessionFilter$1.onExpiredSessionDetected(ConcurrentSessionFilter.java:107)
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:145)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
####
내용 추가.
####
다른분들껀 바로바로 완료가 뜨는데 제것만 답변이 안달리네요.
저와 같은 증상으로 문의된 내용(https://www.egovframe.go.kr/uss/olh/qna/QnaInqireCoUpdt.do?qaId=QA_00000000000017825&menu=5&submenu=3)이 있어서
확인하였지만 답변이 "확인후 연락처로 연락드린다"고 되어 있어 조치 내용이 확인 되지 않아 같은 증상으로 문의올린거였습니다.
조치된 내용을 공유해 주셨으면 좋겠습니다.
A
안녕하세요.
표준프레임워크센터 입니다.
해당건에 대해서는 2가지 조치 방법이 있습니다.
CustomSessionInformationExpiredStrategy 클래스를 추가합니다.
package egovframework.rte.fdl.security.config.internal;
im port java.io.IOException;
im port javax.servlet.ServletException;
im port javax.servlet.http.HttpServletResponse;
im port org.springframework.security.web.session.SessionInformationExpiredEvent;
im port org.springframework.security.web.session.SessionInformationExpiredStrategy;
public class CustomSessionInformationExpiredStrategy implements SessionInformationExpiredStrategy {
@Override
public void onExpiredSessionDetected(SessionInformationExpiredEvent event) throws IOException, ServletException {
HttpServletResponse response = event.getResponse();
res ponse.setCharacterEncoding("UTF-8");
res ponse.getWriter().print("<s cript type='text/javas cript'>alert('Concurent Login Exception~');top.loc ation.href = '/some.do';</s cript>");
res ponse.flushBuffer();
}
}
jar 파일에 있는 security-config.xml 파일을 수정해야 합니다.
<beans:bean id="concurrencyFilter" class="org.springframework.security.web.session.ConcurrentSessionFilter">
<beans:constructor-arg index="0" ref="sessionRegistry"/>
<!-- <beans:constructor-arg index="1" ref="expiredUrlFactoryBean"/> -->
<beans:constructor-arg index="1" ref="sessionInformationExpiredStrategy"/>
</beans:bean>
<beans:bean id="maximumSessionsFactoryBean" class="egovframework.rte.fdl.security.config.internal.MaximumSessionsFactoryBean"/>
<beans:bean id="expiredUrlFactoryBean" class="egovframework.rte.fdl.security.config.internal.ExpiredUrlFactoryBean"/>
<beans:bean id="sessionInformationExpiredStrategy" class="egovframework.rte.fdl.security.config.internal.CustomSessionInformationExpiredStrategy"/>
위 사항은 재배포를 필요로 하며
일정이 잡히지는 않았으나 곧 패치 버전이 배포될 예정입니다.
다음로 간단한 처리 방법은
pom.xml에서
egovframework.rte.fdl.security의 버전을 3.7.0으로 낮추는 것입니다.
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.fdl.security</artifactId>
<version>3.7.0</version>
</dependency>
패치 버전 배포후 버전을 수정하여 적용하시면 되겠습니다.
감사합니다.
표준프레임워크센터 입니다.
해당건에 대해서는 2가지 조치 방법이 있습니다.
CustomSessionInformationExpiredStrategy 클래스를 추가합니다.
package egovframework.rte.fdl.security.config.internal;
im port java.io.IOException;
im port javax.servlet.ServletException;
im port javax.servlet.http.HttpServletResponse;
im port org.springframework.security.web.session.SessionInformationExpiredEvent;
im port org.springframework.security.web.session.SessionInformationExpiredStrategy;
public class CustomSessionInformationExpiredStrategy implements SessionInformationExpiredStrategy {
@Override
public void onExpiredSessionDetected(SessionInformationExpiredEvent event) throws IOException, ServletException {
HttpServletResponse response = event.getResponse();
res ponse.setCharacterEncoding("UTF-8");
res ponse.getWriter().print("<s cript type='text/javas cript'>alert('Concurent Login Exception~');top.loc ation.href = '/some.do';</s cript>");
res ponse.flushBuffer();
}
}
jar 파일에 있는 security-config.xml 파일을 수정해야 합니다.
<beans:bean id="concurrencyFilter" class="org.springframework.security.web.session.ConcurrentSessionFilter">
<beans:constructor-arg index="0" ref="sessionRegistry"/>
<!-- <beans:constructor-arg index="1" ref="expiredUrlFactoryBean"/> -->
<beans:constructor-arg index="1" ref="sessionInformationExpiredStrategy"/>
</beans:bean>
<beans:bean id="maximumSessionsFactoryBean" class="egovframework.rte.fdl.security.config.internal.MaximumSessionsFactoryBean"/>
<beans:bean id="expiredUrlFactoryBean" class="egovframework.rte.fdl.security.config.internal.ExpiredUrlFactoryBean"/>
<beans:bean id="sessionInformationExpiredStrategy" class="egovframework.rte.fdl.security.config.internal.CustomSessionInformationExpiredStrategy"/>
위 사항은 재배포를 필요로 하며
일정이 잡히지는 않았으나 곧 패치 버전이 배포될 예정입니다.
다음로 간단한 처리 방법은
pom.xml에서
egovframework.rte.fdl.security의 버전을 3.7.0으로 낮추는 것입니다.
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.fdl.security</artifactId>
<version>3.7.0</version>
</dependency>
패치 버전 배포후 버전을 수정하여 적용하시면 되겠습니다.
감사합니다.