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 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 5

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

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

file

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

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