11
13693261870
2024-08-29 5dce53514609405ad28bad0625c25ad7f2f25cd8
11
已修改2个文件
38 ■■■■ 文件已修改
se-common/se-common-core/src/main/java/com/se/common/core/utils/StringUtils.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-common/se-common-core/src/main/java/com/se/common/core/utils/StringUtils.java
@@ -6,7 +6,11 @@
import com.se.common.core.constant.Constants;
import com.se.common.core.text.StrFormatter;
import org.springframework.http.HttpCookie;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.util.AntPathMatcher;
import org.springframework.util.CollectionUtils;
import org.springframework.util.MultiValueMap;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
@@ -609,6 +613,23 @@
        return sb.toString();
    }
    public static String getValueFromCookie(ServerHttpRequest request, String key) {
        MultiValueMap<String, HttpCookie> cookies = request.getCookies();
        if (CollectionUtils.isEmpty(cookies)) {
            return null;
        }
        for (Map.Entry<String, List<HttpCookie>> itemList  : cookies.entrySet()) {
            for (HttpCookie cookie :itemList.getValue()) {
                if (cookie.getName().equals(key)){
                    return cookie.getValue();
                }
            }
        }
        return null;
    }
    public static String getValueFromCookie(HttpServletRequest request,String key) {
        Cookie[] cookies = request.getCookies();
        if (cookies == null || cookies.length == 0) {
se-gateway/src/main/java/com/se/gateway/filter/AuthFilter.java
@@ -21,8 +21,6 @@
import io.jsonwebtoken.Claims;
import reactor.core.publisher.Mono;
import javax.servlet.http.HttpServletRequest;
/**
 * 网关鉴权
 * 
@@ -106,19 +104,24 @@
    /**
     * 获取请求token
     */
    private String getToken(ServerHttpRequest req) {
        HttpServletRequest request = (HttpServletRequest) req;
    private String getToken(ServerHttpRequest request) {
        // 从header获取token标识
        String token = request.getHeader(TokenConstants.AUTHENTICATION);
        String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION);
        // 从url获取token标识
        if (StringUtils.isEmpty(token)) {
            token = request.getParameter(TokenConstants.ACCESS_TOKEN);
            token = request.getQueryParams().getFirst(TokenConstants.ACCESS_TOKEN);
        }
        if (StringUtils.isEmpty(token)) {
            token = request.getParameter(TokenConstants.TOKEN);
            token = request.getQueryParams().getFirst(TokenConstants.TOKEN);
        }
        // 从cookie获取token标识
        if (StringUtils.isEmpty(token)) {
            token = StringUtils.getValueFromCookie(request, TokenConstants.COOKIE_TOKEN);
        }
        //String token = request.getHeaders().getFirst(TokenConstants.AUTHENTICATION);
        // 如果前端设置了令牌前缀,则裁剪掉前缀
        if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX)) {
            token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY);