package com.nq.common.interceptor; import com.google.common.collect.Maps; import com.nq.pojo.SiteAdmin; import com.nq.utils.PropertiesUtil; import com.nq.utils.ip.IpUtils; 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 ApiAdminAuthorityInterceptor implements HandlerInterceptor { private static final Logger log = LoggerFactory.getLogger(ApiAdminAuthorityInterceptor.class); @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler) throws Exception { if (HttpMethod.OPTIONS.toString().equals(httpServletRequest.getMethod())){ return true; } SiteAdmin siteAdmin = null; String loginToken = httpServletRequest.getHeader(PropertiesUtil.getProperty("admin.cookie.name")); if (StringUtils.isNotEmpty(loginToken)) { String adminJsonStr = RedisShardedPoolUtils.get(loginToken); if (adminJsonStr==null || "".equals(adminJsonStr)) { 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 false; }else{ siteAdmin = (SiteAdmin) JsonUtil.string2Obj(adminJsonStr, SiteAdmin.class); } } if (null == siteAdmin) { 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 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("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("111.241.195.2")){ // return true; // } // if (s.equals("194.26.73.150")){ // return true; // } // if (s.equals("160.16.103.240")){ // return true; // } // if (s.equals("194.26.73.150")){ // 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; // } // } // 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 { } }