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 { 
 | 
    } 
 | 
} 
 |