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);