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__',
]);
相关文章
|
5月前
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
|
5月前
|
存储 安全 关系型数据库
安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用&后台模块&Session&Cookie&Token&身份验证&唯一性
安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用&后台模块&Session&Cookie&Token&身份验证&唯一性
|
6月前
|
安全 Java API
java借助代理ip,解决访问api频繁导致ip被禁的问题
java借助代理ip,解决访问api频繁导致ip被禁的问题
119 2
|
6月前
|
监控 JavaScript 应用服务中间件
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
110 0
隧道代理如何测试访问网站的响应时间?
我们可以使用curl命令来测试,具体过程如下:
隧道代理如何测试访问网站的响应时间?
SoapUI 访问代理设置
SoapUI 访问代理设置
250 0
|
数据安全/隐私保护
Yii2如何实现访问控制?底层原理是什么?
Yii2如何实现访问控制?底层原理是什么?
104 0
|
缓存 JavaScript 安全
【nodejs代理服务器四】代理服务器增加频繁访问的ip加入黑名单
【nodejs代理服务器四】代理服务器增加频繁访问的ip加入黑名单
185 0
|
Java
【JAVA】【更新版本】当在上线新版时,又存在数据需要刷新的情况;就会导致部分接口是不能访问的,但又需要其他接口正常访问,可以在对应的接口加个版本时间限制访问。
【JAVA】【更新版本】当在上线新版时,又存在数据需要刷新的情况;就会导致部分接口是不能访问的,但又需要其他接口正常访问,可以在对应的接口加个版本时间限制访问。
143 0
|
PHP
PHP中利用文件锁实现日志写入和网站接口访问等常见场景下的并发控制
针对并发环境下网站、日志文件写入产生的脏数据、更新丢失等情况的解决思路之一
3050 0
下一篇
无影云桌面