@Component
@RefreshScope
public class AuthFilter implements GlobalFilter, Ordered {
@Value("#{'${gateway.excludedUrls}'.split(',')}")
private List<String> excludedUrls;
@Value("${gateway.secret}")
private String secret;
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//获取响应对象
ServerHttpResponse response = exchange.getResponse();
//获取当前请求路径
String path = exchange.getRequest().getURI().getPath();
//排除特殊不需要令牌的路径
if (excludedUrls.contains(path)){
return chain.filter(exchange);
}
//获取令牌信息
String token = exchange.getRequest().getHeaders().getFirst("Authorization");
if (StringUtils.isNotEmpty(token)){
//合法性进行判断
JWTUtil.VerifyResult verifyResult = JWTUtil.verifyJwt(token, secret);
if (verifyResult.isValidate()){
//令牌校验通过
return chain.filter(exchange);
}else{
//令牌校验不通过
Map<String,Object> responseData = Maps.newHashMap();
responseData.put
springcloud gateway过滤器模板代码检验token有没有
最新推荐文章于 2023-04-28 08:36:42 发布
本文介绍了如何在SpringCloud Gateway中使用过滤器检查请求中的JWT token。通过从Nacos配置文件排除不需要验证的URL,利用@Value注解获取配置。过滤器会获取request和response对象,提取token并调用JWTUtil进行合法性验证。如果有效则放行,无效则返回错误信息,并将错误信息转换为JSON格式返回给前端。
摘要由CSDN通过智能技术生成