laravel 单用户 单IP 频次访问限制

思路:使用Redis,根据用户id和电脑IP统计访问同一个地址栏的次数,超过则限制访问

Redis参考文档:Redis《Laravel 8 中文文档》

PS:自己进行学习记录并分享给有需要的小伙伴

安装Redis

composer require predis/predis

开启Redis

laravel 单用户 单IP 频次访问限制

中间件操作

public function handle(Request $request, Closure $next)
    {
        //假如uid=1
        $uid=1;
        $id=$uid;

        $key=$request->ip().'_'.$request->pathinfo().'_'.$id;

        // 判断key是否存在 
        $check=Cache::store('redis')->has($key);

        if ($check){
            Cache::store('redis')->increment($key);
            $count=Cache::store('redis')->get($key);
            if ($count>2){
                return 0;
            }
        }else{
            Cache::store('redis')->set($key,1,60);
        }

        return $next($request);
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

跟自带的中间件限流有啥区别吗

'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class
2年前 评论
amateur (楼主) 2年前
jdzor 1年前

file

1年前 评论
amateur (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!