Spring Cloud Gateway使用Token验证详解
引入依赖
org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.cloud spring-cloud-starter-gateway 
自定义过滤器
可以继承AbstractGatewayFilterFactory或实现GlobalFilter实现过滤请求功能
GatewayFilter
GatewayFilter只能指定路径上应用
importorg.springframework.cloud.gateway.filter.GatewayFilter; importorg.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; importorg.springframework.http.HttpStatus; importorg.springframework.http.server.reactive.ServerHttpResponse; importorg.springframework.stereotype.Component; @Component publicclassAuthGatewayFilterFactoryextendsAbstractGatewayFilterFactory{ publicAuthGatewayFilterFactory(){ super(Config.class); } @Override publicGatewayFilterapply(Configconfig){ return(exchange,chain)->{ System.out.println("WelcometoAuthFilter."); Stringtoken=exchange.getRequest().getHeaders().getFirst("sign"); if(Config.secret.equals(token)){ returnchain.filter(exchange); } ServerHttpResponseresponse=exchange.getResponse(); response.setStatusCode(HttpStatus.UNAUTHORIZED); returnresponse.setComplete(); }; } staticclassConfig{ staticStringsecret="1234"; } } 
spring: cloud: gateway: routes: -id:service2_route uri:http://127.0.0.1:8082 predicates: -Path=/s2/** filters: -StripPrefix=1#去掉路径的n个前缀 -Auth=true#输入过滤器类的名称前缀
GlobalFilter
GlobalFilter可以在全局应用
importorg.springframework.cloud.gateway.filter.GatewayFilterChain;
importorg.springframework.cloud.gateway.filter.GlobalFilter;
importorg.springframework.core.Ordered;
importorg.springframework.http.HttpStatus;
importorg.springframework.http.server.reactive.ServerHttpRequest;
importorg.springframework.http.server.reactive.ServerHttpResponse;
importorg.springframework.stereotype.Component;
importorg.springframework.web.server.ServerWebExchange;
importreactor.core.publisher.Mono;
@Component
publicclassAuthGlobalFilterimplementsGlobalFilter,Ordered{
@Override
publicMonofilter(ServerWebExchangeexchange,GatewayFilterChainchain){
System.out.println("WelcometoAuthGlobalFilter.");
ServerHttpRequestrequest=exchange.getRequest();
Stringsign=request.getHeaders().get("sign").get(0);
Stringtoken="1234";
if(token.equals(sign)){
returnchain.filter(exchange);
}
ServerHttpResponseresponse=exchange.getResponse();
response.setStatusCode(HttpStatus.UNAUTHORIZED);
returnresponse.setComplete();
}
@Override
publicintgetOrder(){
return0;
}
} 
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
