zoukankan      html  css  js  c++  java
  • SpringCloud 过滤器

    在网关中配置过滤器

    验证签名

    package com.kps.zuul.filter;
    
    
    import com.kps.common.BodyReaderHttpServletRequestWrapper;
    import com.kps.common.encrypt.MD5;
    import com.kps.common.exception.ErrorTokenException;
    import com.kps.common.utils.NetUtil;
    import org.apache.commons.lang3.StringUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.Ordered;
    import org.springframework.core.annotation.Order;
    import org.springframework.http.MediaType;
    import org.springframework.web.filter.OncePerRequestFilter;
    
    import javax.servlet.FilterChain;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @SuppressWarnings("all")
    @Order(Ordered.HIGHEST_PRECEDENCE)
    @WebFilter(filterName = "ValidAppSign", urlPatterns = {"/app/api/*"})
    public class ValidAppSign extends OncePerRequestFilter {
    private static final Logger logger = LoggerFactory.getLogger(ValidToken.class);
    public final static String ERROR_TOKEN = "Sign is invalid";
    
    @Value("${isDebug}")
    private boolean isDebug;
    @Value("${appSign}")
    private String appSign;
    
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
    throws ServletException, IOException {
    //获取 body 中post过来的数据
    String contentType = request.getContentType();
    if (StringUtils.isNotBlank(contentType) && contentType.indexOf(MediaType.APPLICATION_JSON.toString()) >= 0) {
    request = new BodyReaderHttpServletRequestWrapper(request);
    }
    String data = null;
    try {
    data = NetUtil.getBodyString(request);
    } catch (Exception e) {
    e.printStackTrace();
    }
    //获取 url 中的数据
    String sign = request.getParameter("sign");
    String signMD5= MD5.getSign(data,appSign);
    if(!sign.equals(signMD5)){
    throw new ErrorTokenException(ERROR_TOKEN);
    }
    
    
    filterChain.doFilter(request, response);
    
    }
    }


     

  • 相关阅读:
    201805140815_《缓存操作函数封装》
    201802071223_《更换两个二进制》
    201801301359——《注意Javascript这种形式》
    201708310807_《算法-Javascript实现最大公约数》
    重拾java openjdk1.8 语法小试
    代码轮子之很简单但是挺管用的基于C# Task的模拟并发的代码
    docker1.12 安装pxc(Percona XtraDB Cluster )测试
    .net orm比较之dapper和Entity Framework6的简单测试比较
    StackExchange.Redis使用和封装小试
    docker1.12 安装redis3官方集群 攻略
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/10277933.html
Copyright © 2011-2022 走看看