这个一个权限校验的全局过滤器,实现Gateway的GlobalFilter接口,项目中使用到反应式编程方法;
权限校验原理是基于JWT的token校验法;
//整个类实现springcloud-gateway中GlobalFilter接口,项目中使用到反应式编程方法
@Override
public Mono<Void> filter(ServerWebExchange serverWebExchange, GatewayFilterChain gatewayFilterChain) {
log.info("check token and user permission....");
LinkedHashSet requiredAttribute = serverWebExchange.getRequiredAttribute(ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR);
// 获取request对象
ServerHttpRequest request = serverWebExchange.getRequest();
// 获取当前网关访问的URI
String requestUri = request.getPath().pathWithinApplication().value();
if (requiredAttribute != null) {
Iterator<URI> iterator = requiredAttribute.iterator();
while (iterator.hasNext()) {
URI next = iterator.next();
if (next.getPat