用户非法访问路由,则当前ip自增加一 自增 incr 方法
// dd($request->getRealIp( $safe_mode=true ));
$Redis = new Redis;
$key = 'forbidden:ip:' . $request->getRealIp( $safe_mode = true );
$limit = 10;
#设置过期时间 2小时 读系统配置
$error_ex_time = bcmul(2,3600);
$check = $Redis::exists($key);
dd('ckeck:'.$check);
if($check && $error_ex_time > 0){
$Redis::incr($key);
dd('key1:'.$Redis::get($key));
if( $Redis::get($key) >= $limit )
return error('','当前IP非法访问次数过多,已禁用');
}else{
if( $error_ex_time ) {
$Redis::incr($key);
$Redis::expire($key,$error_ex_time);
dd('key2:'.$Redis::get($key));
}
}
出现问题
这个是请求一次后,直接用redis查询当前的key值发现,如果自增异常就不会累加
实现案例 用 set key 累加1 也可以实现当前功能
这是因为webman框架的原因吗
我用你的代码在webman里跑到了40+也没有遇到问题,使用的包是
composer require psr/container ^1.1.1 illuminate/redis illuminate/events
要不把IP输出出来一起看看,插眼,等大佬回答学习经验补充,如果不考虑waf问题这么写没问题,如果考虑waf问题的话要自己做处理,waf形式得到的ip是 192.167.1.2 192.168.2.3 大概这种
按照大佬指示测试,打印ip地址,真的是ip改变了,所以key才没有获取到
IP变了,换一个唯一表示,jwt之类的可以用uid,或者看请求头里设置session或者cookie试试
这个功能主要作用防止用户调接口,访问不存在的路由才记录,没有登录的用户是没有数据记录的,所以我只能根据ip来判断,哈哈哈哈
呕吼,那只能这样了
补充一下 我是在路由回调做数据处理