package com.nq.common.interceptor; import com.google.common.collect.Maps; import com.nq.pojo.AgentUser; import com.nq.utils.PropertiesUtil; import com.nq.utils.redis.JsonUtil; import com.nq.utils.redis.RedisShardedPoolUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpMethod; 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; import java.io.PrintWriter; import java.util.Map; @Component public class ApiAgentAuthorityInterceptor implements HandlerInterceptor { private static final Logger log = LoggerFactory.getLogger(ApiAgentAuthorityInterceptor.class); @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler) throws Exception { // httpServletResponse.setHeader("Access-Control-Allow-Origin",httpServletRequest.getHeader("origin")); // //该字段可选,是个布尔值,表示是否可以携带cookie // httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true"); // httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT,PATCH, DELETE, OPTIONS"); // httpServletResponse.setHeader("Access-Control-Allow-Headers", "*"); // httpServletResponse.setHeader("Access-Control-Allow-Headers", "agenttoken"); if (HttpMethod.OPTIONS.toString().equals(httpServletRequest.getMethod())){ return true; } AgentUser agentUser = null; String loginToken = httpServletRequest.getHeader(PropertiesUtil.getProperty("agent.cookie.name")); if (StringUtils.isNotEmpty(loginToken)) { String agentJsonStr = RedisShardedPoolUtils.get(loginToken); if (agentJsonStr==null || "".equals(agentJsonStr)){ httpServletResponse.setCharacterEncoding("UTF-8"); httpServletResponse.setContentType("application/json;charset=UTF-8"); PrintWriter writer = httpServletResponse.getWriter(); Map map = Maps.newHashMap(); map.put("success", Boolean.valueOf(false)); map.put("msg", "請先登錄,無權限訪問agent"); writer.print(JsonUtil.obj2String(map)); writer.flush(); writer.close(); return false; }else { agentUser = (AgentUser) JsonUtil.string2Obj(agentJsonStr, AgentUser.class); } } if (null == agentUser) { // httpServletResponse.reset(); httpServletResponse.setCharacterEncoding("UTF-8"); httpServletResponse.setContentType("application/json;charset=UTF-8"); PrintWriter writer = httpServletResponse.getWriter(); Map map = Maps.newHashMap(); map.put("success", Boolean.valueOf(false)); map.put("msg", "請先登錄,無權限訪問agent"); writer.print(JsonUtil.obj2String(map)); writer.flush(); writer.close(); return false; } //194.26.73.150, 172.70.34.195 // String ip = IpUtils.getIp(httpServletRequest); // String[] split = ip.split(", "); // for (String s : split) { // if (s.equals("118.140.35.45")){ // return true; // } // if (s.equals("118.140.35.50")){ // return true; // } // if (s.equals("160.16.103.240")){ // return true; // } // if (s.equals("194.26.73.150")){ // return true; // } // if (s.equals("58.152.85.239")){ // return true; // } // if (s.equals("66.249.77.78")){ // return true; // } // if (s.equals("220.133.13.177")){ // return true; // } // if (s.equals("101.24.91.83")){ // return true; // } if (s.equals("111.90.140.138")){ // return true; // } if (s.equals("103.233.2.196")){ // return true; // } // // if (s.equals("111.241.195.2")){ // return true; // } // // } // httpServletResponse.setCharacterEncoding("UTF-8"); // httpServletResponse.setContentType("application/json;charset=UTF-8"); // PrintWriter writer = httpServletResponse.getWriter(); // Map map = Maps.newHashMap(); // map.put("success", Boolean.valueOf(false)); // map.put("msg", "請先登錄,無權限訪問admin"); // writer.print(JsonUtil.obj2String(map)); // writer.flush(); // writer.close(); return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, Exception e) throws Exception { } }