티스토리 뷰
Interceptor를 이용해서, 특정 경로 (/cms) 요청시 비로그인 상태면 차단.
servlet-context.xml 에 등록
<interceptors>
<interceptor>
<mapping path="/cms/**"/>
<beans:bean class="com.knsu.map.interceptor.LoginUserHandlerInterceptor"></beans:bean>
</interceptor>
</interceptors>
LoginUserHandlerInterceptor.java
preHandle() 에서 return 값이 false이면 해당 URL에 매핑된 컨트롤러를 실행하지 않고, true이면 실행한다.
return값이 jsp 페이지가 아닌, boolean 이기 때문에 Writer내의 script로 응답페이지를 조정해야하는데,
Login 페이지로 이동하고 싶다면 location.href= 를 사용하면 될 듯하다.
package com.knsu.map.interceptor;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.knsu.map.HomeController;
public class LoginUserHandlerInterceptor implements HandlerInterceptor {
private static final Logger logger = LoggerFactory.getLogger(LoginUserHandlerInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
logger.info("Interceptor 호출 ");
HttpSession session = request.getSession();
String isLogin = (String)session.getAttribute("isLogin");
// 로그인한 사용자일 경우
if (isLogin != null && isLogin.equals("t")) return true;
// 아닐 경우
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<script>alert('도배 때문에 글작성이 하루동안 제한됩니다.');history.go(-1);</script>");
out.flush();
// TODO Auto-generated method stub
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
}
'Spring' 카테고리의 다른 글
[기타 팁] Ajax 요청시 data에 String을 쓰면 안된다? (0) | 2019.12.18 |
---|---|
Spring(5)_MVC(2)_Ajax&JSON (0) | 2019.12.12 |
Spring(3)_DB연결(2)&MVC (0) | 2019.12.12 |
Spring(2)_DB연결&Security (0) | 2019.12.12 |
Spring(1)_설정파일 (0) | 2019.12.12 |
댓글