zoukankan      html  css  js  c++  java
  • laravel 频率限制throttle

    在 Laravel 5.6 中,还引入了频率限制功能。所谓频率限制,指的是在指定时间单个用户对某个路由的访问次数限制,该功能有两个使用场景,一个是在某些需要验证/认证的页面限制用户失败尝试次数,提高系统的安全性,另一个是避免非正常用户(比如爬虫)对路由的过度频繁访问,从而提高系统的可用性,此外,在流量高峰期还可以借助此功能进行有效的限流。

    在 Laravel 中该功能通过内置的 throttle 中间件来实现,该中间件接收两个参数,第一个是次数上限,第二个是指定时间段(单位:分钟):

    Route::middleware('throttle:60,1')->group(function () {
        Route::get('/user', function () {
            //
        });
    });

    以上路由的含义是一分钟能只能访问路由分组的内路由(如 /user)60 次,超过此限制会返回 429 状态码并提示请求过于频繁。

    如果你觉得这种静态设置频率的方式不够灵活,还可以通过模型属性来动态设置频率,例如,我们可以为上述通过 throttle 中间件进行分组的路由涉及到的模型类定义一个 rate_limit 属性,然后这样来动态定义这个路由:

    Route::middleware('throttle:rate_limit,1')->group(function () {
        Route::get('/user', function () {
            // 在 User 模型中设置自定义的 rate_limit 属性值
        });
        Route::get('/post', function () {
            // 在 Post 模型中设置自定义的 rate_limit 属性值
        });
    });

    这样,我们就可以通过为不同的模型类设置不同的 rate_limit 属性值来达到动态设置频率限制的效果了。

  • 相关阅读:
    servlet类中ServletConfig及ServletContext
    jsp及servlet中获取项目路径的一些方法
    EL表达式的一些知识
    python——字符太长,换行需要三个引号。
    python——转义字符
    python——函数缺省参数的使用
    python——字典
    python——if、elif、else的使用
    python——对列表使用的函数方法
    python-创建数字列表
  • 原文地址:https://www.cnblogs.com/sgm4231/p/10283427.html
Copyright © 2011-2022 走看看