1.配置yml
(局部)
filters:
- AddRequestHeader=Truth,i am ok
(全局)
default-filters:
- AddRequestHeader=Truth,i am ok
2.编写controller测试
3.全局Filetr 实现用户简单认证
/**
* 用户认证
*/
@Order(1)
@Component
public class AuthorizedFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
MultiValueMap<String, String> queryParams = request.getQueryParams();
String author = queryParams.getFirst("author");
if ("admin".equals(author)){
//放行
return chain.filter(exchange);
}
else{
//认证不通过
System.out.println("fail----------------------------------------");
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
return exchange.getResponse().setComplete();//拦截
}
}
}
5. 网关实现跨域设置(yml)
spring:
cloud:
gateway:
#
globalcors: # 全局的跨域处理
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]':
allowedOrigins: # 允许哪些网站的跨域请求
- "http://localhost:8090"
allowedMethods: # 允许的跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: "*" # 允许在请求中携带的头信息
allowCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期