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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。