ThinkPHP6 接口频繁访问限制

简介: tp6的频繁访问的实现方式

(1) composer安装think-throttle

composer require topthink/think-throttle

(2) 组件以中间件的方式进行工作,因此它的开启与其他中间件一样,例如在全局中间件中使用 app/middleware.php

return [
    \think\middleware\Throttle::class,
];

(3) 在 config/throttle.php 配置选项:

// 中间件配置
return [
    // 缓存键前缀,防止键值与其他应用冲突
    'prefix' => 'throttle_',
    // 缓存的键,true 表示使用来源ip
    'key' => true,
    // 要被限制的请求类型, eg: GET POST PUT DELETE HEAD
    'visit_method' => ['GET'],
    // 设置访问频率,例如 '10/m' 指的是允许每分钟请求10次。值 null 表示不限制, eg: null 10/m  20/h  300/d 200/300
    'visit_rate' => '100/m',
    // 访问受限时返回的响应
    'visit_fail_response' => function (Throttle $throttle, Request $request, int $wait_seconds) {
        return Response::create('Too many requests, try again after ' . $wait_seconds . ' seconds.')->code(429);
    },
];

(4)中间件加入频繁限制

->middleware(\think\middleware\Throttle::class, [
    'visit_rate' => '5/m',
    'key' => '__CONTROLLER__/__ACTION__/__IP__',
]);
相关文章
|
6天前
|
安全 Java API
java借助代理ip,解决访问api频繁导致ip被禁的问题
java借助代理ip,解决访问api频繁导致ip被禁的问题
|
3月前
|
监控 JavaScript 应用服务中间件
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
41 0
|
10月前
|
搜索推荐 前端开发
【接口请求配置】axios 某个单独接口的个性化配置
【接口请求配置】axios 某个单独接口的个性化配置
143 0
|
文件存储
Yii2.0框架提供了内置的文件访问组件,可以通过配置只允许访问指定的目录,防止非法文件的包含。这个如何使用?
Yii2.0框架提供了内置的文件访问组件,可以通过配置只允许访问指定的目录,防止非法文件的包含。这个如何使用?
114 0
|
缓存 JavaScript 安全
【nodejs代理服务器四】代理服务器增加频繁访问的ip加入黑名单
【nodejs代理服务器四】代理服务器增加频繁访问的ip加入黑名单
131 0
|
Java
【JAVA】【更新版本】当在上线新版时,又存在数据需要刷新的情况;就会导致部分接口是不能访问的,但又需要其他接口正常访问,可以在对应的接口加个版本时间限制访问。
【JAVA】【更新版本】当在上线新版时,又存在数据需要刷新的情况;就会导致部分接口是不能访问的,但又需要其他接口正常访问,可以在对应的接口加个版本时间限制访问。
117 0
|
Web App开发 区块链
Remix无法连接私有链问题解决方案
Remix无法连接私有链问题解决方案
420 0