package com.baidu.dsp.common.interceptor.session;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.springframework.web.servlet.ModelAndView;
import com.baidu.dsp.common.interceptor.WebCommonInterceptor;
import com.baidu.ub.common.commons.ThreadContext;
import com.github.knightliao.apollo.utils.tool.TokenUtil;
/**
* 全局的异常处理拦截器
*
* @author liaoqiqi
*/
public class SessionInterceptor extends WebCommonInterceptor {
protected static final Logger LOG = LoggerFactory.getLogger(SessionInterceptor.class);
/**
* 会话ID
*/
public static final String SESSION_KEY = "sessionId";
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
// 删除
MDC.remove(SESSION_KEY);
ThreadContext.removeSessionId();
ThreadContext.clean();
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 初始化会话
ThreadContext.init();
// 放SessionId
String token = TokenUtil.generateToken();
MDC.put(SESSION_KEY, token);
ThreadContext.putSessionId(token);
return true;
}
}