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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

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

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

file

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