Helius
2020-07-10 c8d7346677ec4dff85fc05792cc2d736d7fc3dfa
src/main/java/com/xcong/excoin/configurations/security/TokenFilter.java
@@ -4,8 +4,11 @@
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.contants.AppContants;
import com.xcong.excoin.common.exception.GlobalException;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.common.system.bean.LoginUserBean;
import com.xcong.excoin.configurations.properties.ApplicationProperties;
import com.xcong.excoin.configurations.properties.SecurityProperties;
@@ -24,6 +27,7 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
@@ -43,7 +47,10 @@
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String token = resolveToken(request);
        if (!AppContants.TIME_OUT.equals(token)) {
        if (StrUtil.isNotBlank(token)) {
            String redisKey = "";
            // 根据user-agent判断pc端还是app端
@@ -67,7 +74,10 @@
            log.info("token为空:{}", request.getRequestURI());
            SecurityContextHolder.clearContext();
        }
        } else {
            response.setHeader("TimeOut", AppContants.TIME_OUT);
            SecurityContextHolder.clearContext();
        }
        filterChain.doFilter(servletRequest, servletResponse);
    }
@@ -79,13 +89,7 @@
     */
    private String resolveToken(HttpServletRequest request) {
        try {
            // TODO debug模式下写死用户
            String bearerToken = request.getHeader(AppContants.TOKEN_HEADER);
//            if (applicationProperties.isDebug()) {
//                bearerToken = "Bearer JSEre1ZUKEu2Ga5ORM+juxXv6yBwmt+FgLhxaeHf1EEJfIb3oRir4pXqe5JDhS6sXfLYOXRIAyBpq+SYBwAtGigxwzGVPn+k4Pt6vNxZ4h8Pk4IeG4+FqbFD0guzvu3WN2eRnnzYqCepl429v9Ju7n4jSG0Hj5ViM3MHQZs3qHo=";
//            } else {
//                bearerToken = request.getHeader(AppContants.TOKEN_HEADER);
//            }
            if (StringUtils.hasText(bearerToken) && bearerToken.startsWith(AppContants.TOKEN_START_WITH)) {
                // 去掉令牌前缀
                String rsaToken = bearerToken.replace(AppContants.TOKEN_START_WITH, "");
@@ -94,10 +98,11 @@
                if (verifyTokenExpired(Long.parseLong(tokens[1]))) {
                    return tokens[0];
                }
                } else {
                log.info("前面token为{}", tokens[0]);
                log.info("时间为:{}, 当前时间为:{}", tokens[1], System.currentTimeMillis());
                return null;
                    return AppContants.TIME_OUT;
                }
            }
            log.info("bearerToken---->{}", bearerToken);
        } catch (Exception e) {