security filter 多次获取body问题
security 登录改为 post json 登录 多次获取body 问题
原因: security filter 和 自定义 filter 执行顺序问题,框架会优先执行 17个 security filter ,再执行 自定义的 filter
,所以直接多次获取body 是不行的,需要把自定义的 filter 放到 security filter 中
重写登录过滤器重写 UsernamePasswordAuthenticationFilter
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import com.stark37125.core.util.RequestUtils;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.springframework.http.MediaType;import org.springfra ...
mybatis拦截器感数据加解密
一、什么是Mybatis Plugin在mybatis官方文档中,对于Mybatis plugin的的介绍是这样的:
12345678910111213MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括://语句执行拦截Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)// 参数获取、设置时进行拦截ParameterHandler (getParameterObject, setParameters)// 对返回结果进行拦截ResultSetHandler (handleResultSets, handleOutputParameters)//sql语句拦截StatementHandler (prepare, parameterize, batch, update, query)
简而言之,即在执行sql的整个周期中,我们可以任意切入到某一点对sql的参数、sql执行结果集、s ...
spring注解驱动开发01
@ComponentScan 注解概述1.扫描时排除注解标注的类例如,我们现在排除@Controller、@Service和@Repository注解,我们可以在PersonConfig类上通过@ComponentScan注解的excludeFilters()实现。例如,我们在PersonConfig类上添加了如下的注解。
123@ComponentScan(value = "io.mykit.spring", excludeFilters = { @Filter(type = FilterType.ANNOTATION, classes = {Controller.class, Service.class, Repository.class})})
2.扫描时只包含注解标注的类例如,我们需要Spring在扫描时,只包含@Controller注解标注的类,可以在PersonConfig类上添加@ComponentScan注解,设置只包含@Controller注解标注的类,并禁用默认的过滤规则,如下所示。
1 ...
tomcat 配置
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...
单元测试断言
单元测试 默认 开启 断言测试的
123-ea : -enableassertions-de : disableassertions
例子
1234567@Testpublic void Test003(){ assert 2 == 1; System.out.println("111");}
正常运行会保错
在jvm 参数关闭断言,删除-ea 或改为-da 运行既不会报错
单元测试坑
1java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy
参考1https://stackoverflow.com/questions/24352967/spring-boot-errorjava-lang-arraystoreexception-sun-reflect-annotation-typenotp
解决思路解决方案可能会根据实际的不兼容根本原因而有所不同。如何调查此类问题的最佳方法是遵循以下路线:
1Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
并将断点放入类’TypeNotPresentExceptionProxy’的构造函数中(只有一个)。
在调试模式下执行后,您应该看到究竟是什么错误,并根据您的发现,您可以决定要做什么(添加依赖项,排除自动配置,…)
在我的具体情况下,断点揭示了这一点:
1java.lang ...
多次获取body数据
工具类
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import org.apache.commons.io.IOUtils;import javax.servlet.ServletRequest;import java.io.*;import java.nio.charset.StandardCharsets;/** * @author shuzhuo */public class HttpHelper { /** * 获取 body 字符串数据 * * @param request {@link ServletRequest} * @return */ public static String getBodyString(ServletRequest request) { StringBuilder sb = new StringBuilder(); ...
接口验签
签名工具类1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283import cn.hutool.crypto.SecureUtil;import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.format.DateTimeFormatter;import java.util.Arrays;import java.util.HashMap;import java.util.Map;import java.util.Set;/** * @author shuzhuo */public class GenSignUtil { /** * 判断签名是否正确,必须包含sign ...
本地缓存caffeine
maven
12345<dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.9.3</version></dependency>
config
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455import com.github.benmanes.caffeine.cache.Cache;import com.github.benmanes.caffeine.cache.Caffeine;import com.stark37125.core.common.enums.CacheNameEnums;import org.springframework.cache. ...