zoukankan      html  css  js  c++  java
  • SpringCloud使用Feign拦截器实现URL过滤和RequestParam加密

    转自:https://www.yisu.com/zixun/94849.html

    一、FeignInterceptor.class拦截器
    package com.xiaohang.socialcard.pre.intercepter;
    
    import com.xiaohang.socialcard.pre.utils.SM4Util;
    import feign.RequestInterceptor;
    import feign.RequestTemplate;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Configuration;
    
    import java.util.*;
    
    @Configuration
    @Slf4j
    public class FeignInterceptor implements RequestInterceptor {
    
        @Value("${encrypt.urls}")
        private String[] urlList;
    
        @Override
        public void apply(RequestTemplate template) {
            if (Arrays.asList(urlList).contains(template.url())) {//根据URL地址过滤请求
                log.info("请求参数为:{}", template.queryLine());//?param=123456
                Collection<String> paramList = template.queries().get("param");
                String param = paramList.iterator().next();
                try {
                    // 加密
                    param = SM4Util.encryptEcb("1234567890", param);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                Map<String, Collection<String>> newQueries = new HashMap<>();
                Collection<String> value = new ArrayList<>();
                value.add(param);
                newQueries.put("param", value);
                template.queries(newQueries);// 替换原有对象
                log.info("加密后参数为:{}", template.queryLine());//?param=xxxxxx
            }
        }
    }
    二、配置文件

    application.yml

    changsha-payment.url: http://xx.xx.xx.xx:8080
    encrypt.urls: /openInter/getToken,/openInter/dispatchPayEx,/bcs/balance
    三、APIFeign接口
    package com.xiaohang.socialcard.pre.feign;
    
    import com.xiaohang.socialcard.pre.model.ChangShaResp;
    import com.xiaohang.socialcard.pre.pojo.Loffee;
    import org.springframework.cloud.netflix.feign.FeignClient;
    import org.springframework.web.bind.annotation.*;
    
    @FeignClient(name = "changsha-payment", url = "${changsha-payment.url}")
    public interface ChangShaApi {
    
        @RequestMapping(method = RequestMethod.GET, path = "openInter/getToken", consumes = "*/*", produces = "application/json;charset=UTF-8")
        ChangShaResp getToken(@RequestParam(name = "param", required = true) String param);
        @RequestMapping(method = RequestMethod.POST, value = "openInter/dispatchPayEx", produces = "text/html", consumes = "application/x-www-form-urlencoded")
        String payPage(@RequestParam(name = "param", required = true) String param);
    
        @RequestMapping(method = RequestMethod.POST, path = "/bcs/balance", produces = "text/html", consumes = "application/x-www-form-urlencoded")
        String downLoadPay(@RequestParam(name = "param", required = true) String param);
    四、启动类Application.class
    package com.xiaohang.socialcard.pre;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.feign.EnableFeignClients;
    
    @EnableFeignClients
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    五、pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.xiaohang</groupId>
        <artifactId>pre-socialcard-changsha</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <parent>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-parent</artifactId>
            <version>Camden.SR5</version>
        </parent>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.version>1.8</java.version>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
                <version>1.2.3.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-feign</artifactId>
                <version>1.2.5.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.18</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.9.9</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <dependencies>
                        <dependency>
                            <groupId>org.springframework</groupId>
                            <artifactId>springloaded</artifactId>
                            <version>1.2.5.RELEASE</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </project>
  • 相关阅读:
    HDU 2433 Travel (最短路,BFS,变形)
    HDU 2544 最短路 (最短路,spfa)
    HDU 2063 过山车 (最大匹配,匈牙利算法)
    HDU 1150 Machine Schedule (最小覆盖,匈牙利算法)
    290 Word Pattern 单词模式
    289 Game of Life 生命的游戏
    287 Find the Duplicate Number 寻找重复数
    283 Move Zeroes 移动零
    282 Expression Add Operators 给表达式添加运算符
    279 Perfect Squares 完美平方数
  • 原文地址:https://www.cnblogs.com/sharpest/p/13705111.html
Copyright © 2011-2022 走看看