首页 > 其他分享 >spring cloud gateway 自定义GatewayFilterFactory

spring cloud gateway 自定义GatewayFilterFactory

时间:2023-06-02 14:59:13浏览次数:41  
标签:自定义 validateUrls spring public GatewayFilterFactory import gateway cloud

官网地址:https://docs.spring.io/spring-cloud-gateway/docs/2.2.9.RELEASE/reference/html/#writing-custom-route-predicate-factories

参考地址:https://blog.csdn.net/myli92/article/details/127328893

import com.ruoyi.common.core.utils.StringUtils;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;

/**
 * 验证码过滤器
 *
 * @author ruoyi
 */
@Component
public class ValidateCodeFilter extends AbstractGatewayFilterFactory<ValidateCodeFilter.Config> {


    public ValidateCodeFilter()
    {
        super(Config.class);
    }

    @Override
    public GatewayFilter apply(Config config) {
        return (exchange, chain) -> {
            ServerHttpRequest request = exchange.getRequest();

            // 非登录/注册请求或验证码关闭,不处理
            if (!StringUtils.containsAnyIgnoreCase(request.getURI().getPath(), config.getValidateUrls()) ) {
                return chain.filter(exchange);
            }
            // TODO 做验证处理逻辑

            return chain.filter(exchange);
        };
    }

    static class Config {
        private String[] validateUrls ;

        public String[] getValidateUrls() {
            return validateUrls;
        }
        public void setValidateUrls(String[] validateUrls) {
            this.validateUrls = validateUrls;
        }
    }
}

 

配置:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
      routes:
        # 认证中心
        - id: ruoyi-auth
          uri: lb://ruoyi-auth
          predicates:
            - Path=/auth/**
          filters:
            # 验证码处理
            - name: ValidateCodeFilter
              args:
                validateUrls: 
                  - /auth/login
                  - /auth/register       
            - StripPrefix=1

 

标签:自定义,validateUrls,spring,public,GatewayFilterFactory,import,gateway,cloud
From: https://www.cnblogs.com/zcjyzh/p/17451719.html

相关文章

  • springboot gradle dockerfle
    本地打包FROMopenjdk:8-jdk-alpineRUNset-eux&&sed-i's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g'/etc/apk/repositoriesRUNmkdir/appCOPYbuild/libs/dataExChangePlatform-0.0.1-SNAPSHOT.jar/app/dataExChangePlatform-0.0.1-SNAPSHOT.......
  • SpringBoot Vue3 Element Plus 打造分布式存储系统
    SpringBoot+Vue3+ElementPlus打造分布式存储系统download:3w51xuebccom配置IDEA热部署-devtools开发过程中频繁修改代码,每次都需要重新编译,部署,重启服务器,这无疑极大浪费了我们的时间。解决这个问题的方法就是使用热部署技术。本篇文章将介绍如何在IDEA中使用devtools实现热部署......
  • paddleDetection 训练自定义数据集 第二章 开始训练
    paddleDetection训练自定义数据集第二章开始训练上一章数据集制作文章目录paddleDetection训练自定义数据集第二章开始训练一、环境二、安装1.安装miniconda2.安装paddlepaddle3.下载paddleDetection三、训练自定义数据集1.首先选择预训练模型,然后修改配置文件2.训练3.导......
  • paddleOcr 训练自定义数据
    paddleOcr训练自定义数据文章目录paddleOcr训练自定义数据前言一、创建环境二、安装环境三、使用ppocrlabel标注图片1.打开图片目录2.导出标记结果、导出识别结果四、训练1.切分数据2.修改训练的模型yml3.开始训练五、已经训练的模型,有了新数据需要继续训练1.使用恢复训练2.使......
  • 蛋糕网上销售系统|基于Springboot+Vue开发实现网上蛋糕系统
    作者主页:编程指南针作者简介:Java领域优质创作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助文末获取源码 项目编号:BS-SC-051前言:伴随着互联网的“低门槛”和人们金钱消费的数字化转变,网络购物奕然已经成为了时代......
  • 自定义View-字体篇
    文章目录来源字体mediumFontMetricstextSize这是为70F的时候自己绘制的线条top、ascent、descent、bottombaseLine通过ascent和descent计算,top和bottom计算出来的还不一样TextPaint和StaticLayoutbreakText(CharSequencetext,intstart,intend,booleanmeasureForwards......
  • Spring Boot如何自定义监控指标
    1.创建项目pom.xml引入相关依赖<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/maven-4.0.0.xsd"......
  • maven创建web项目(springboot)
    创建一个Java项目和创建一个Web项目在IntelliJIDEA中有一些区别。创建Java项目:选择"Java"选项,并选择适当的JDK版本。创建的是一个普通的Java项目,用于编写Java类、库和应用程序。没有默认的Web相关依赖和配置。创建Web项目:选择"JavaEnterprise"选......
  • spinner自定义[转]
    转自:https://www.jianshu.com/p/7b03ade29091spinner_drop_down_shape的代码<?xmlversion="1.0"encoding="utf-8"?><layer-listxmlns:android="http://schemas.android.com/apk/res/android"><item><shap......
  • Vue-自定义icon实现
    在项目中引入了element-ui之后,发现其内置的icon有限,无法满足项目的需求,因此需自定义icon来实现需求。在vue项目的components下新建SvgIcon目录,在SvgIcon目录下新建index.vue插入代码:<template><svgclass="svg-icon"aria-hidden="true"><use:xlink:href="ic......