拦截验证

1.  注意如果request里面的流,被读取了一次,后面的controller层将无法读取数据。

     处理方法:将 request 封装到 SignatureRequestWrapper (继承自 HttpServletRequestWrapper) 中,从 SignatureRequestWrapper  获取流数据(getInputStream())

2. Filter 无法直接通过 @Value 注入properties属性 ,可以通过 DelegatingFilterProxy 来处理,将Filter 交给spring来管理。具体代码:    

    SignatureFilter:

@Component("signature")
public class SignatureFilter implements Filter {
    
    private Logger logger = LoggerFactory.getLogger(SignatureFilter.class);
    
    @Value("${rsaKey}")
    private String rsaKey;
     ……
}

     web.xml 配置:

    
<filter>
        <filter-name>signature</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>signature</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

3. 通过 ContentType (request.getContentType()) 判断数据类型 (例如:application/json , application/x-www-form-urlencoded) 来决定对流的处理方式

4. 验证规则:先对参数key值进行排序,按顺序拼接字符串,然后加上 验证码 ,对整个字符串进行加密

    参见:http://www.cnblogs.com/Jtianlin/p/7922732.html

5. 

原文地址:https://www.cnblogs.com/Jtianlin/p/7978829.html