转发自链接: link
1.通过ip地址+uri拼接用以作为访问者访问接口区分
通过在Interceptor中拦截请求,从Redis中统计用户访问接口次数从而达到接口防刷目的
2.就是现在我们的接口防刷处理,针对是所有的接口(项目案例中我只是写的接口比较少)
2.1我们都知道拦截器是可以设置拦截规则的,从而达到拦截处理目的;
3.要知道就是要进行防刷处理的接口,其 x, y, z的值也是并不一定会统一的
4.自定义注解 + 在需要进行防刷处理的各个接口方法上
5.在拦截器中通过反射获取到各个接口中的x, y, z值即可达到我们想要的接口自由目的
6.Interceptor处逻辑修改(最重要是通过反射判断此接口是否需要进行防刷处理,以及获取到x, y, z的值)
7.现在看起来,可以针对每个要进行防刷处理的接口进行针对性自定义多长时间内的最大访问次数,以及禁用时长,哪个接口需要,就直接+在那个接口方法出即可
8.修改自定义注解,让其可以作用在类上,达到通用的效果
9.在接口方法中常用的在请求路径中获取参数的套路
按照我们之前那种前缀+ip+uri拼接的形式作为key的话,其实是区分不了的
10.实际上可以再获取接口方法所在类类名,使用类名 + 方法名称替换uri即可