访问限制操作一分钟3次访问,用中间件进行实现
public function handle($request, \Closure $next)
{
// 获取IP地址 服务器访问时间戳
$ip = $_SERVER['REMOTE_ADDR'];
$times = $_SERVER['REQUEST_TIME_FLOAT'];
// 进来先获取,获取不到进行创建
$data = [
'ip' => $ip,
'first_time' => $times,
'second_time' => 0,
];
$exit_ip = Cache::get($ip);
if (!$exit_ip) {
Cache::set($ip, $data);
return $next($request);
}
if ($exit_ip) {
$second_time = $exit_ip['second_time'];
if ($second_time) {
$age = $times - $exit_ip['first_time'];
if ($age < 60) {
// 自己定义的异常类,采用json形式返回给客户端
throw new TimeOutException();
}
if ($age > 60) {
$data = [
'ip' => $ip,
'first_time' => $times,
'second_time' => 0
];
Cache::set($ip, $data);
return $next($request);
}
} else {
$data = Cache::get($ip);
$data['second_time'] = $times;
Cache::set($ip, $data);
return $next($request);
}
}
}
勿喷,有什么可以一劳永逸的方法,欢迎评论指教下小菜鸡的学习之路