package com.matrix.system.common.interceptor; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.tools.WebUtil; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 身份认证拦截器 * * @author JIANGYOUYAO * @email 935090232@qq.com * @date 2017年12月8日 */ @Component public class UserLoginInterceptor implements HandlerInterceptor { private static final String LOGIN_TIME_OUT = "loginTimeOut..."; private static final String X_REQUESTED_WITH = "X-Requested-With"; private static final String DO_COMMON_REDIRECT_LOGIN = "/common/toLogin"; private static final String MOBILE_REDIRECT_LOGIN = "/common/hmlogin"; private static final String DEVELOPER = "/developer/"; private static final String CUSTOMER = "/customer/"; private static final String SUPER = "/super/"; private static final String ADMIN = "/admin/"; /** * 检查管理员是否登陆 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception { String requestUrl = request.getRequestURI(); // 如果访问特殊的路径需要验证管理员的登录权限 if (requestUrl.indexOf(ADMIN) != -1 || requestUrl.indexOf(SUPER) != -1 || requestUrl.indexOf(DEVELOPER) != -1 || requestUrl.indexOf(CUSTOMER) != -1) { if (WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY) == null) { // 判断是否为异步请求 String requestType = request.getHeader(X_REQUESTED_WITH); if (requestType == null) { if(requestUrl.contains("/mobile/")){ response.sendRedirect(request.getContextPath() + MOBILE_REDIRECT_LOGIN); }else{ response.sendRedirect(request.getContextPath() + DO_COMMON_REDIRECT_LOGIN); } } else { response.getWriter().write(LOGIN_TIME_OUT); } return false; } else { return true; } } else { return true; } } @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { } }