一、自己写:
1.创建中间件:
namespace app\middleware;
class Check
{
/**
* 处理请求
*
* @param \think\Request $request
* @param \Closure $next
* @return Response
*/
public function handle($request, \Closure $next)
{
//自己写频率限制次数
//获取当前请求的控制器名
$controller = $request->controller();
//获取当前请求的操作名
$action = $request->action();
//记录标志
$key = md5($request->ip().$controller.$action);
//默认当前访问次数为一次
$time = cache($key)?:1;
if($time>3){
return fail('访问次数过多');
}else{
$time++;
}
//存入缓存中,一分钟访问次数
cache($key,$time,60);
return $next($request);
}
}
2.在限制路由后面->middleware,如下:
Route::get('xss','Goods/xss')->middleware(\app\middleware\Check::class);
二、网上安装工具:
1.安装
composer require topthink/think-throttle
2.在路由后面+:m为每分钟,3为次数
->middleware(Throttle::class,['visit_rate'=>'3/m',])
3.安装后会自动生成 config/throttle.php 配置文件,可在里面更改提示信息:
return Response::create('请求次数太多');