修改配置
This commit is contained in:
parent
2597f02517
commit
36389ab14b
14
pom.xml
14
pom.xml
|
|
@ -18,6 +18,20 @@
|
|||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.thingsboard</groupId>
|
||||
<artifactId>rest-client</artifactId>
|
||||
<version>4.2.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 显式声明 commons-lang3 版本以解决 NoSuchMethodError -->
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.14.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Cloud Gateway -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,18 @@
|
|||
package com.tuoheng.gateway.filter;
|
||||
|
||||
import com.tuoheng.gateway.utils.IotClient;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.cloud.gateway.filter.GatewayFilter;
|
||||
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.server.reactive.ServerHttpRequest;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
/**
|
||||
* WebSocket 过滤器
|
||||
* 用于处理 WebSocket 连接的转发和日志记录
|
||||
|
|
@ -16,6 +21,10 @@ import reactor.core.publisher.Mono;
|
|||
@Component
|
||||
public class WebSocketFilter extends AbstractGatewayFilterFactory<WebSocketFilter.Config> {
|
||||
|
||||
// TODO: 后续需要修改为动态获取的 token
|
||||
private static final String JWT_TOKEN = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZW5hbnRAdGhpbmdzYm9hcmQub3JnIiwidXNlcklkIjoiYTc3ODE5ZjAtYWU1My0xMWYwLTlmMDAtOGQ2NDc3MDZjZWMyIiwic2NvcGVzIjpbIlRFTkFOVF9BRE1JTiJdLCJzZXNzaW9uSWQiOiI4M2U3MzEzMS1hMWVkLTRjMmQtOTk4Mi1jNDAwM2E5OTQ3MjIiLCJleHAiOjE3NjQ4NDY2ODQsImlzcyI6InRoaW5nc2JvYXJkLmlvIiwiaWF0IjoxNzY0ODM3Njg0LCJlbmFibGVkIjp0cnVlLCJpc1B1YmxpYyI6ZmFsc2UsInRlbmFudElkIjoiYTcwZjFlZjAtYWU1My0xMWYwLTlmMDAtOGQ2NDc3MDZjZWMyIiwiY3VzdG9tZXJJZCI6IjEzODE0MDAwLTFkZDItMTFiMi04MDgwLTgwODA4MDgwODA4MCJ9.XHwZPSzyBcMEjJSJl7FnoIpo5UFO9a0YiU6q0eEikMlzyKHyzwVD01Gtkt6jykjuJP4xBSeaapw47wRL-HPhCQ";
|
||||
|
||||
// private static final String JWT_TOKEN = "123";
|
||||
public WebSocketFilter() {
|
||||
super(Config.class);
|
||||
}
|
||||
|
|
@ -25,8 +34,32 @@ public class WebSocketFilter extends AbstractGatewayFilterFactory<WebSocketFilte
|
|||
return (exchange, chain) -> {
|
||||
logRequest(exchange);
|
||||
|
||||
return chain.filter(exchange).then(Mono.fromRunnable(() -> {
|
||||
logResponse(exchange);
|
||||
// 修改请求 URI,添加 token 参数
|
||||
ServerHttpRequest request = exchange.getRequest();
|
||||
URI originalUri = request.getURI();
|
||||
|
||||
String token = IotClient.getToken();
|
||||
|
||||
// 在原有 URI 基础上添加 token 参数
|
||||
URI modifiedUri = UriComponentsBuilder.fromUri(originalUri)
|
||||
.queryParam("token", token)
|
||||
.build()
|
||||
.toUri();
|
||||
|
||||
// 创建新的请求对象
|
||||
ServerHttpRequest modifiedRequest = request.mutate()
|
||||
.uri(modifiedUri)
|
||||
.build();
|
||||
|
||||
// 创建新的 exchange
|
||||
ServerWebExchange modifiedExchange = exchange.mutate()
|
||||
.request(modifiedRequest)
|
||||
.build();
|
||||
|
||||
log.info("添加 token 参数后的 URI: {}", modifiedUri);
|
||||
|
||||
return chain.filter(modifiedExchange).then(Mono.fromRunnable(() -> {
|
||||
logResponse(modifiedExchange);
|
||||
}));
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package com.tuoheng.gateway.utils;
|
||||
|
||||
import org.thingsboard.rest.client.RestClient;
|
||||
import org.thingsboard.server.common.data.Device;
|
||||
import org.thingsboard.server.common.data.EntityType;
|
||||
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
|
||||
import org.thingsboard.server.common.data.kv.TsKvEntry;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.page.PageLink;
|
||||
import org.thingsboard.server.common.data.query.*;
|
||||
import org.thingsboard.server.common.data.util.CollectionsUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class IotClient {
|
||||
|
||||
public static String getToken() {
|
||||
// ThingsBoard REST API URL
|
||||
String url = "http://iot.t-aaron.com:18080";
|
||||
// Default Tenant Administrator credentials
|
||||
String username = "tenant@thingsboard.org";
|
||||
String password = "tuoheng2023";
|
||||
// Creating new rest client and auth with credentials
|
||||
RestClient client = new RestClient(url);
|
||||
client.login(username, password);
|
||||
String result = client.getToken();
|
||||
client.logout();
|
||||
client.close();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue