🐛 fix #I3VH9H PigUserDetailsServiceImpl.loadUserByUsername中无法使用WebUtils.getClientId

This commit is contained in:
lbw 2021-06-17 17:47:41 +08:00
commit e39355c3da
3 changed files with 18 additions and 4 deletions

View File

@ -34,8 +34,10 @@ import org.springframework.web.method.HandlerMethod;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
/** /**
@ -154,13 +156,25 @@ public class WebUtils extends org.springframework.web.util.WebUtils {
* @return * @return
*/ */
@SneakyThrows @SneakyThrows
public String[] getClientId(ServerHttpRequest request) { public String getClientId(ServerHttpRequest request) {
String header = request.getHeaders().getFirst(HttpHeaders.AUTHORIZATION); String header = request.getHeaders().getFirst(HttpHeaders.AUTHORIZATION);
return splitClient(header)[0];
}
@SneakyThrows
public String getClientId(HttpServletRequest request) {
String header = WebUtils.getRequest().getHeader("Authorization");
return splitClient(header)[0];
}
@NotNull
private static String[] splitClient(String header) throws UnsupportedEncodingException {
if (header == null || !header.startsWith(BASIC_)) { if (header == null || !header.startsWith(BASIC_)) {
throw new CheckedException("请求头中client信息为空"); throw new CheckedException("请求头中client信息为空");
} }
byte[] base64Token = header.substring(6).getBytes("UTF-8"); byte[] base64Token = header.substring(6).getBytes(StandardCharsets.UTF_8);
byte[] decoded; byte[] decoded;
try { try {
decoded = Base64.decode(base64Token); decoded = Base64.decode(base64Token);

View File

@ -60,7 +60,7 @@ public class ValidateCodeGatewayFilter extends AbstractGatewayFilterFactory<Obje
ServerHttpRequest request = exchange.getRequest(); ServerHttpRequest request = exchange.getRequest();
boolean isAuthToken = CharSequenceUtil.containsAnyIgnoreCase(request.getURI().getPath(), boolean isAuthToken = CharSequenceUtil.containsAnyIgnoreCase(request.getURI().getPath(),
SecurityConstants.OAUTH_TOKEN_URL); SecurityConstants.OAUTH_TOKEN_URL);
boolean isIgnoreClient = configProperties.getIgnoreClients().contains(WebUtils.getClientId(request)[0]); boolean isIgnoreClient = configProperties.getIgnoreClients().contains(WebUtils.getClientId(request));
try { try {
// only oauth and the request not in ignore clients need check code. // only oauth and the request not in ignore clients need check code.
if (isAuthToken && !isIgnoreClient) { if (isAuthToken && !isIgnoreClient) {

View File

@ -42,7 +42,7 @@
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.target>1.8</maven.compiler.target>
<spring-boot-admin.version>2.4.1</spring-boot-admin.version> <spring-boot-admin.version>2.4.1</spring-boot-admin.version>
<hutool.version>5.6.7</hutool.version> <hutool.version>5.6.7</hutool.version>
<mybatis-plus.version>3.3.4.1</mybatis-plus.version> <mybatis-plus.version>3.4.3</mybatis-plus.version>
<dynamic-ds.version>3.4.0</dynamic-ds.version> <dynamic-ds.version>3.4.0</dynamic-ds.version>
<captcha.version>2.2.0</captcha.version> <captcha.version>2.2.0</captcha.version>
<velocity.version>1.7</velocity.version> <velocity.version>1.7</velocity.version>