티스토리 뷰

Spring

Spring(4)_Interceptor

clumsy0g 2019. 12. 12. 16:52

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함