package com.gateway.filters;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Maps;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import java.util.Map;
@Component
public class AuthFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
String token = exchange.getRequest().getQueryParams().getFirst("token");
if (token == null || token.isEmpty()) {
ServerHttpResponse response = exchange.getResponse();
// 封装错误信息
Map<String, Object> responseData = Maps.newHashMap();
responseData.put("code", 401);
responseData.put("message", "非法请求");
responseData.put("cause", "Token is empty");
try {
// 将信息转换为 JSON
ObjectMapper objectMapper = new ObjectMapper();
byte[] data = objectMapper.writeValueAsBytes(responseData);
// 输出错误信息到页面
DataBuffer buffer = response.bufferFactory().wrap(data);
response.setStatusCode(HttpStatus.UNAUTHORIZED);
response.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
return response.writeWith(Mono.just(buffer));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
return chain.filter(exchange);
}
/**
* 设置过滤器的执行顺序
*
* @return
*/
@Override
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SpringCloudTest.rar (59个子文件)
SpringCloudTest
pom.xml 5KB
src
test
java
main
resources
java
cloud-gateway-gateway9527
pom.xml 3KB
src
test
java
main
resources
application.yml 1KB
bootstrap.yml 1KB
java
com
gateway
GateWayApplication.java 771B
filters
IpKeyResolver.java 584B
AuthFilter.java 2KB
target
classes
application.yml 1KB
bootstrap.yml 1KB
com
gateway
GateWayApplication.class 2KB
filters
AuthFilter.class 4KB
IpKeyResolver.class 1KB
generated-sources
annotations
.idea
jarRepositories.xml 864B
uiDesigner.xml 9KB
runConfigurations.xml 346B
workspace.xml 7KB
misc.xml 750B
compiler.xml 742B
.gitignore 184B
encodings.xml 985B
NacosConsumer
pom.xml 1KB
src
test
java
main
resources
application.yml 23B
bootstrap.yml 1KB
java
com
atguigu
springcloud
ConsumerNacos8002Application.java 458B
controler
ConsumerOtherController.java 697B
ConsumerController.java 823B
RibbonConfig.java 458B
target
classes
application.yml 23B
bootstrap.yml 1KB
com
atguigu
springcloud
ConsumerNacos8002Application.class 829B
controler
ConsumerOtherController.class 1KB
ConsumerController.class 1KB
RibbonConfig.class 748B
generated-sources
annotations
SpringSecurity
pom.xml 2KB
src
test
java
main
resources
java
com
cjj
SpringSecurityApplication.java 438B
controller
TestController.java 322B
target
classes
com
cjj
controller
TestController.class 618B
SpringSecurityApplication.class 715B
generated-sources
annotations
NacosTest
pom.xml 2KB
src
test
java
main
resources
application.yml 650B
mappers
PaymentMapper.xml 762B
bootstrap.yml 1KB
java
com
atguigu
springcloud
PaymentMain8001.java 433B
controller
TestController.java 787B
PaymentController.java 1KB
dao
PaymentDao.java 257B
service
PaymentService.java 549B
entities
CommonResult.java 361B
Payment.java 405B
target
classes
application.yml 650B
mappers
PaymentMapper.xml 762B
bootstrap.yml 1KB
com
atguigu
springcloud
controller
PaymentController.class 3KB
TestController.class 1KB
dao
PaymentDao.class 363B
service
PaymentService.class 993B
entities
Payment.class 2KB
CommonResult.class 2KB
PaymentMain8001.class 790B
generated-sources
annotations
共 59 条
- 1
资源评论
成市风彩
- 粉丝: 23
- 资源: 35
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功