天天看點

springMVC自定義攔截器(Interceptor)實作登陸驗證1.為什麼要登陸攔截2.實作思路3.springMVC配置4.Interceptor類編寫

1.為什麼要登陸攔截

在未登入之前,我們并不希望使用者可以看見裡面的内容,這時候就要設定攔截器,隻有登陸之後的使用者才可以看見裡面的内容。

2.實作思路

使用攔截器,判斷session裡是否有使用者資訊,若有,則放行,若沒有,則重定向到登陸頁面。

3.springMVC配置

<!--配置攔截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/home/**"></mvc:exclude-mapping>
            <mvc:exclude-mapping path="/**/*.css"/>
            <mvc:exclude-mapping path="/**/*.js"/>
            <mvc:exclude-mapping path="/**/*.png"/>
            <mvc:exclude-mapping path="/**/*.gif"/>
            <mvc:exclude-mapping path="/**/*.jpg"/>
            <mvc:exclude-mapping path="/**/*.jpeg"/>
            <mvc:exclude-mapping path="/registerUser"></mvc:exclude-mapping>
            <mvc:exclude-mapping path="/checkId"></mvc:exclude-mapping>
            <mvc:exclude-mapping path="/register"></mvc:exclude-mapping>
            <bean class="com.sustly.interceptors.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
           

配置攔截所有請求,除了登陸注冊頁面以及靜态資源檔案。

4.Interceptor類編寫

public class LoginInterceptor implements HandlerInterceptor {


    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {

            String id  = (String) request.getSession().getAttribute("id");
            if(id == null) {
                response.sendRedirect("/home/login");
                return false;
            }else {
                return true;
            }
    }

    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

    }

    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }
}