添加gateway依赖
yaml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
创建一个tokenFilter
实现全局过滤器GlobalFilter,并且实现fitler方法
yaml
@Value("${cn.token.key}")
private String tokenKey;
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpResponse response = exchange.getResponse();
List<String> tokens = exchange.getRequest().getHeaders().get("token");
if(ObjectUtil.isEmpty(tokens)){
log.debug("请传输token");
response.setStatusCode(HttpStatus.PAYMENT_REQUIRED);
return response.setComplete();
}
String token = tokens.get(0);
if(ObjectUtil.isEmpty(token)){
log.debug("token不能为空");
response.setStatusCode(HttpStatus.PAYMENT_REQUIRED);
return response.setComplete();
}
boolean b = false;
try {
//利用jwt对token进行验证
JWTValidator.of(token).validateAlgorithm(JWTSignerUtil.hs256(tokenKey.getBytes())).validateDate();
b = true;
}catch (Exception ex){
ex.printStackTrace();
log.error("token不正确");
}
if(!b){
response.setStatusCode(HttpStatus.UNAUTHORIZED);
return response.setComplete();
}
return chain.filter(exchange);
}