You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lvyuou/TokenInterceptor.java

60 lines
2.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<String , String> 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<String , Object> 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方法");
}
}