public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
try {
if(!exchange.getRequest().getPath().toString().equals("/hcp-system/sysLogin/enterLogin")){
if(exchange.getRequest().getHeaders().get("token") != null || exchange.getRequest().getMethod().toString().equals("GET")){
try {
exchange.getRequest().getURI().getQuery();
String str = exchange.getRequest().getHeaders().get("token").get(0);
Claims claims = Jwts.parser().setSigningKey("sxygsj!2q".getBytes()).parseClaimsJws(str).getBody();
String method = exchange.getRequest().getMethodValue();
if(method.equals("POST")) {
return factory.apply(new ModifyRequestBodyGatewayFilterFactory.Config()
.setRewriteFunction(String.class,String.class,(_exchange, body) -> {
// 进行参数修改
Map<String,Object> map = JSON.parseObject(body);
map.put("text","啦啦啦");
return Mono.just(map.toString());
}))
.filter(exchange, chain);
}
}catch (Exception exception){
throw new Error("token不合法");
}
}else {
throw new Error("token不可为空");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return chain.filter(exchange).then(Mono.defer(() -> {
exchange.getResponse().getHeaders().entrySet().stream()
.filter(kv -> (kv.getValue() != null && kv.getValue().size() > 1))
.filter(kv -> (kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN)
|| kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS)))
.forEach(kv ->
{
kv.setValue(new ArrayList<String>() {{
add(kv.getValue().get(0));
}});
});
return chain.filter(exchange);
}));
}