返回顶部
首页 > 资讯 > 精选 >laravel8怎么使用throttle中间件
  • 671
分享到

laravel8怎么使用throttle中间件

2023-07-04 18:07:44 671人浏览 薄情痞子
摘要

本篇内容主要讲解“laravel8怎么使用throttle中间件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“laravel8怎么使用throttle中间件”吧!laravle8 访问限制 th

本篇内容主要讲解“laravel8怎么使用throttle中间件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“laravel8怎么使用throttle中间件”吧!

laravle8 访问限制 throttle 中间件

throttle 中间件介绍

频率限制经常用在 api 中,用于限制独立请求者对特定 API 的请求频率。每个 API 都会选择一个自己的频率限制时间跨度,GitHub 选择的是 1 小时,Laravel 中间件选择的是 1 分钟。

例如:throttle:60,1,即设置频率限制为每分钟 60 次,如果一个 IP 一分钟内超过这个限制,那么服务器就会返回 429 Too Many Attempts. 响应。

在 laravel8 中使用 throttle 中间件

我们通常在这里一般会使用 throttle 中间件来做一个限定条件的速率限定,比如说不在 IP 白名单中的 IP 限制一分钟访问多少次。相对于之前来说,laravel8 中的 throttle 中间件,有了更简单的使用方法。

首先我们可以看到在 Kernel.PHP 文件中有这样的定义

        protected $middlewareGroups = [        'WEB' => [            \App\Http\Middleware\EncryptCookies::class,            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,            \Illuminate\Session\Middleware\StartSession::class,            // \Illuminate\Session\Middleware\AuthenticateSession::class,            \Illuminate\View\Middleware\ShareErrorsFromSession::class,            \App\Http\Middleware\VerifyCsrfToken::class,            \Illuminate\Routing\Middleware\SubstituteBindings::class,        ],        'api' => [            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,            'throttle:api',            \Illuminate\Routing\Middleware\SubstituteBindings::class,        ],    ];        protected $routeMiddleware = [        'auth' => \App\Http\Middleware\Authenticate::class,        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,        'can' => \Illuminate\Auth\Middleware\Authorize::class,        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,        'passWord.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,    ];

很明显看到其实 laravel8 中定义的'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 是框架已经定义好的,并且在 api 中使用的是 throttle:api。

当然,一般的大家的用法可能就是在这里把 throttle:api 注释掉,新建一个 throttle 中间件或者是在路由中可以直接使用 throttle:60,1 这样的。

那如果是需要做一些复杂的判断,比如说我有很多个 IP 白名单想要排除掉,不做速率限制,或者是有个 VVVIP 用户不限制速率的时候怎么办呢?

这时,我们可以在 laravel8 中找到 App\Providers\RouteServiceProvider.php 文件,在文件最下面我们可以看到这样的写法

      protected function configureRateLimiting()    {        RateLimiter::for('api', function (Request $request) {            return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());        });    }

这里定义的 api 就是上面在 Kernel.php 文件中所使用的的 throttle:api。在这里,我们可以设定自定义的速率限制条件,比如说限制用户 IP 白名单之外的 IP 访问限制为每小时 60 次,白名单每次可以访问 1000 次

RateLimiter::for('apiHour', function (Request $request) {            if(!in_array($request->ip(), config('ip.whitelist'))){                return Limit::perHour(60)->by($request->ip());            }else{                return Limit::perHour(1000)->by($request->ip());            }        });

当然别忘记在 config 文件夹中新建 ip.php 文件

return [    'whitelist' => [        '192.168.0.1',    ],];

:heart:温馨提示:在使用的时候,用的是 api 接口路由的话,如果想使用自定义的 throttle:apiHour 不要忘记把原来 Kernel.php 中的 throttle:api 注释掉哟!

最后我们就可以在路由中快乐的使用自定义的速率控制中间件了

Route::group([    'middleware' => ['throttle:apiHour']], function ($router) {   Route::get('user', function (Request $request) {       return $request->user();   });});

到此,相信大家对“laravel8怎么使用throttle中间件”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: laravel8怎么使用throttle中间件

本文链接: https://lsjlt.com/news/346668.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • laravel8怎么使用throttle中间件
    本篇内容主要讲解“laravel8怎么使用throttle中间件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“laravel8怎么使用throttle中间件”吧!laravle8 访问限制 th...
    99+
    2023-07-04
  • Laravel8 ES怎么封装及使用
    这篇文章主要介绍“Laravel8 ES怎么封装及使用”,在日常操作中,相信很多人在Laravel8 ES怎么封装及使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Laravel8 ES怎么封装及使用”的疑...
    99+
    2023-07-04
  • 怎么在laravel8中使用dingo与jwt鉴权
    这篇文章将为大家详细讲解有关怎么在laravel8中使用dingo与jwt鉴权,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 什么是dingodingo api包是给laravel和lum...
    99+
    2023-06-15
  • JavaScript 中Throttle节流函数如何使用
    JavaScript 中Throttle节流函数如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。通常来说我们用下面的代码来实现这个功...
    99+
    2024-04-02
  • thinkphp的中间件怎么使用
    今天小编给大家分享一下thinkphp的中间件怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在thinkphp中,在...
    99+
    2023-06-29
  • Node.js怎么使用Middleware中间件
    今天小编给大家分享一下Node.js怎么使用Middleware中间件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。中间件中...
    99+
    2023-07-06
  • laravel8中的路由怎么加载
    这篇“laravel8中的路由怎么加载”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“laravel8中的路由怎么加载”文章吧...
    99+
    2023-06-29
  • java中间件技术怎么使用
    Java中间件技术是一种用于帮助开发人员构建分布式应用程序的工具。它们提供了一系列功能和工具,用于处理分布式系统中的通信、事务、负载...
    99+
    2023-10-25
    java
  • .NET 6中间件Http Logging怎么使用
    这篇文章主要介绍“.NET 6中间件Http Logging怎么使用”,在日常操作中,相信很多人在.NET 6中间件Http Logging怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-06-22
  • Thinkphp6.0中间件怎么用
    这篇文章主要介绍Thinkphp6.0中间件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!0中间件分为系统中间件和应用中间件,系统中间件为核心框架内置的中间件,应用中间件是在应用里面创建的中间件。中间件的主要应...
    99+
    2023-06-21
  • Thinkphp5.1中间件怎么用
    本篇内容介绍了“Thinkphp5.1中间件怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、中间件的作用中间件主要用于拦截或过滤应用...
    99+
    2023-06-30
  • Golang Gin中间件Next()方法怎么使用
    这篇“Golang Gin中间件Next()方法怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang...
    99+
    2023-07-06
  • mysql中间件mycat怎么用
    这篇文章将为大家详细讲解有关mysql中间件mycat怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一,什么是mycat一个彻底开源的,面向企业应用开发的大数据库集...
    99+
    2024-04-02
  • go语言数据库中间件怎么使用
    Go语言数据库中间件的使用方法有以下几个步骤:1. 引入数据库驱动包:根据所选中间件的类型,引入对应的数据库驱动包。例如,如果选择使...
    99+
    2023-10-20
    go语言 数据库
  • Gin框架怎么使用panic处理中间件
    这篇文章主要介绍“Gin框架怎么使用panic处理中间件”,在日常操作中,相信很多人在Gin框架怎么使用panic处理中间件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Gin框架怎么使用panic处理中间件...
    99+
    2023-07-06
  • Django中间件的使用
    中间件(middleware) 中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应可以通过中间件,也就是说中间件可以处理request和resp...
    99+
    2023-01-30
    中间件 Django
  • node.js怎么使用express-fileupload中间件实现文件上传
    本篇内容介绍了“node.js怎么使用express-fileupload中间件实现文件上传”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本...
    99+
    2023-06-17
  • vue中怎么使用eventbus实现组件间传值
    这期内容当中小编将会给大家带来有关vue中怎么使用eventbus实现组件间传值,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。当然,使用存储也是可以得,但是并非一定要缓存...
    99+
    2024-04-02
  • Koa框架中间件怎么用
    这篇文章主要介绍了Koa框架中间件怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Node 主要用在开发 Web 应用,koa 是目前 ...
    99+
    2024-04-02
  • laravel的中间件middleware怎么用
    这篇文章将为大家详细讲解有关laravel的中间件middleware怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。中间件可以对请求进行过滤,这里可以利用中间件来验证用户是否登录,如果用户登录则可以...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作