2018-03-06 spring boot 攔截器

最近在做一個養老院的項目,自己做的攔截器,希望能幫助上大家  

下面直接把代碼粘出來。

首先先新建一個CustomWebMvcConfigurerAdapter  類

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.InterceptorRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration

public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {

@Override

    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login/**");  //對來自/user/** 這個鏈接來的請求進行攔截

      // super.addInterceptors(registry);

    }

}


再寫一個LoginInterceptor類,對每次請求的接口進行判斷,三次判斷

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.HandlerInterceptor;

import org.springframework.web.servlet.ModelAndView;

public class LoginInterceptor implements HandlerInterceptor {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

throws Exception {

String string = request.getRequestURL().toString();

System.out.println("請求url:"+string);

String uri = request.getRequestURL().toString();

if (uri.contains("login")) {

return true;

}

// a)攔截用戶請求,判斷用戶是否登錄

HttpSession session = request.getSession();

Object username = session.getAttribute("username");

if (username != null) {

// b)如果用戶已經登錄。放行

return true;

}

// c)如果用戶未登錄,跳轉到登錄頁面。

System.out.println("session用戶過期跳轉登錄頁面!");

response.sendRedirect(request.getContextPath() + "/controller/login");

return false;

}

@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {

//handle執行之後,返回ModelAndView之前。

//System.out.println("Interceptor1 postHandle......handle執行之後,返回ModelAndView之前。");

}

@Override

public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)

throws Exception {

// 返回ModelAndView之後。

//可以在此處理異常

//System.out.println("Interceptor1 afterCompletion......返回ModelAndView之後, 在此處理異常");

}

希望幫助上大家,第一次發自己寫的東西,多多支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章