package com.spring.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import dao.Query; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import util.Info; import java.util.Map; public class TokenInterceptor implements HandlerInterceptor { /** * 在请求处理之前进行调用(Controller方法调用之前) */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { String token = request.getHeader("token"); if(token != null && !token.equals("") && request.getSession().getAttribute("id") == null) { HttpSession session = request.getSession(); //处理session Map tokenInfo = Query.make("token").where("token" , token).where("token_time" , ">" , Info.getDateStr()).find(); if(!tokenInfo.isEmpty()){ session.setAttribute("cx" , tokenInfo.get("cx")); session.setAttribute("login" , tokenInfo.get("login")); session.setAttribute("username" , tokenInfo.get("username")); session.setAttribute("id" , tokenInfo.get("id")); JSONObject session1 = JSON.parseObject(tokenInfo.get("session")); for( Map.Entry entry :session1.entrySet()) { session.setAttribute(entry.getKey() , entry.getValue()); } } } return true;//如果设置为false时,被请求时,拦截器执行到此处将不会继续操作 //如果设置为true时,请求将会继续执行后面的操作 } /** * 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { // System.out.println("执行了TestInterceptor的postHandle方法"); } /** * 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { // System.out.println("执行了TestInterceptor的afterCompletion方法"); } }