123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package com.fdkankan.agent.interceptor;
- import cn.hutool.http.ContentType;
- import com.alibaba.fastjson.JSONObject;
- import com.fdkankan.agent.common.ResultCode;
- import com.fdkankan.agent.common.ResultData;
- import com.fdkankan.redis.constant.RedisKey;
- import com.fdkankan.redis.util.RedisUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.http.HttpHeaders;
- import org.apache.tomcat.util.http.MimeHeaders;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import org.springframework.web.servlet.HandlerInterceptor;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.lang.reflect.Field;
- @Component
- @Slf4j
- public class TokenInterceptor implements HandlerInterceptor {
- @Autowired
- private RedisUtil redisUtil;
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- response.setContentType("text/html;charset=UTF-8");
- String token = request.getHeader("token");
- if( request.getMethod().equals("GET")){
- if(StringUtils.isBlank(token)){
- return true;
- }
- }
- if(StringUtils.isEmpty(token)){
- this.needLogin(request,response);
- return false;
- }
- try {
- String fdToken = String.format(RedisKey.TOKEN_V3,token);
- if( redisUtil.hasKey(fdToken)){
- redisUtil.expire(fdToken,6 * 60 * 60);
- return true;
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- this.needLogin(request,response);
- return false;
- }
- private void needLogin(HttpServletRequest request, HttpServletResponse response) {
- try {
- String result = JSONObject.toJSONString(ResultData.error(ResultCode.USER_NOT_LOGIN));
- response.getWriter().append(result);
- } catch (IOException e) {
- log.info("LoginInterceptor|needLogin|IOException|" + e);
- e.printStackTrace();
- }
- }
- /**
- * 修改header信息,key-value键值对儿加入到header中
- */
- private void reflectSetparam(HttpServletRequest request,String key,String value){
- Class<? extends HttpServletRequest> requestClass = request.getClass();
- System.out.println("request实现类="+requestClass.getName());
- try {
- Field request1 = requestClass.getDeclaredField("request");
- request1.setAccessible(true);
- Object o = request1.get(request);
- Field coyoteRequest = o.getClass().getDeclaredField("coyoteRequest");
- coyoteRequest.setAccessible(true);
- Object o1 = coyoteRequest.get(o);
- System.out.println("coyoteRequest实现类="+o1.getClass().getName());
- Field headers = o1.getClass().getDeclaredField("headers");
- headers.setAccessible(true);
- MimeHeaders o2 = (MimeHeaders)headers.get(o1);
- o2.addValue(key).setString(value);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
|