动态访问控制
2023-09-10
开启动态访问控制
使用@EnableDynamicLimit
注解开启动态访问控制
@SpringBootApplication
@EnableDynamicLimit
public class SimpleAuthApplication {
public static void main(String[] args) {
SpringApplication.run(SimpleAuthApplication.class, args);
}
}
或者在配置文件中配置
simple-auth.func.dynamic-limit=true
创建LimitItemProvider
@Component
public class MyLimitItemProvider implements RequestLimitItemProvider {
@Override
public List<RequestLimitItem> getRequestLimitItem() {
List<RequestLimitItem> list = new ArrayList<>();
//匹配路径`/say`, 60秒只能访问2次,超过则被禁止10s
list.add(new RequestLimitItem("/say",2,60,10));
return list;
}
}
RequestLimitItem 的参数如下
List<String> path
::匹配的路径
Integer times
:最大请求次数
Integer seconds
:记录时间
Integer ban
:禁止时间
Class<? extends SignStrategic> itemStrategic
:Item的生成策略,默认为uri
Class<? extends SignStrategic> signStrategic
:用户标识的生成策略,默认为用户IP
Class<? extends EffectiveStrategic> effectiveStrategic
:判断请求是否被记录的策略,默认为true
Class<? extends TokenLimit> tokenLimit
:限流算法,默认为CompleteLimit,即所有的请求都准确记录