Spring interceptor
-
[Spring] interceptor login check2015.02.11
-
[Spring] Spring Login Interceptor 설정2014.01.17
[Spring] interceptor login check
2015. 2. 11. 16:40
반응형
Spring InterCeptor 를 이용한 Session Login Check
InterCeptor에서 제공하는 3가지 메소드가 각각 실행되는 시점.
- preHandle: Controller 실행 요청 전
- postHandle: view(jsp)로 forward 되기 전에
- afterCompletion: 요청이 끝난 뒤
session check 시점은 dispatcher -> controller 로 요청이 오기 전에 실행..되야 하므로 preHandle 메소드 시점에 처리.
- CommonInterceptor.java
public class CommonInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
log.debug("===============================preHandler===============================");
if (SessionUtils.getSessionVO() == null) {
//14.11.25 jp add..
//session validation check order & mypage * method type : submit, ajax
if ((request.getRequestURI().indexOf("/biz/ord/order/") > -1) || (request.getRequestURI().indexOf("/biz/mpg/") > -1)) {
String ajaxCall = (String) request.getHeader("AJAX");
if ("true".equals(ajaxCall)) {
response.sendError(901);
} else {
response.sendRedirect(Globals.PROTOCOL_HTTPS + Globals.DOMAIN + "/base/login/loginForm.do");
response.flushBuffer();
}
return false;
}
}
return true;
}
}
- Sevlet-interceptor.xml
submit에 경우는 sendRedirect 로 리다이렉트가 가능하지만, ajax Call에 경우는 sendRedirect가 호출 되더라도 Callback 처리 되기때문에 추가해줘야 한다.
ajax 공통 함수에 jqXHR.status = 901로 리턴 될 경우 로그인 페이지로 핸들링 처리를 추가해준다.
- ajax 호출시 beforeSend 에 ajax 호출을 Header에 기록.
$.ajax({
beforeSend: function (xmlHttpRequest) {
xmlHttpRequest.setRequestHeader("AJAX", "true");
}
});
반응형
'Programming > Spring' 카테고리의 다른 글
[Spring] Spring Login Interceptor 설정
2014. 1. 17. 10:38
반응형
Spring Interceptor 설정
Spring login interceptor 설정을 위해 servlet.xml 설정 파일에 interceptor를 설정 합니다.
<bean id="loginUrlHandlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="order" value="1">
<property name="interceptors">
<list>
<ref bean="loginInterceptor"></ref>
</list>
</property>
</property>
</bean>
위와 같이 설정을 하고 Interceptor Class를 생성합니다.
@Service
public class LoginInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String path = request.getServletPath();
if(path.equals("/login.do")) {
return true;
} else {
@SuppressWarnings("unchecked")
Map<string, object> userMap = (Map<string, object>) request.getSession().getAttribute("userMap");
if(userMap == null) {
response.sendRedirect("/login.do");
return false;
} else {
return true;
}
}
}
}
login.do로 접근하는 url을 제외하고 세션을 체크하여 userMap에 데이터가 null 일 경우 login.do 페이지로 Redirect 처리를 수행합니다.
반응형
'Programming > Spring' 카테고리의 다른 글
[Spring] Environment와 @PropertySource (0) | 2014.02.05 |
---|---|
뷰 이름 명시적 지정 :ModelAndView와 String 리턴 타입 (1) | 2014.02.04 |
[Spring] log4j 설정파일 정보 (0) | 2014.01.17 |
[Spring] Spring Ajax 사용 위한 JsonView 설정 (0) | 2014.01.13 |
java spring Maven 기반 개발환경 구성 (0) | 2013.04.30 |