2019-03-18

        好久没写blog了,因为自己的博客项目在自己的服务器上,由于我的升级失误把服务器上的项目删掉了,伤心了好久.

今天天气好了,看到朋友圈的人都出去浪了,让我感觉春天来了,所以,我想写点什么来记录我最近一段时间

学的东西,不在乎学多少.从今天开始,每天一篇lavarel 项目的总结.也算是对得起自己的初衷.

        今天就是路由中间件之 throttle 接口限流中间件, 顺便学习个单词 throttle:名词为节流阀,动词为节流的意思.

关于具体的使用 官网手册中有具体说明我就不说了,我的middleware中设置的是 10/1  也就是 每分钟最多10次  但是当

我请求到6时 就不能通过了.

看源码  vendor\laravel\framework\src\Illuminate\Routing\Middleware\ThrottleRequests.php 文件就是在这个地方 对号入座

在改文件下 

找到各个方法 写下:

file_put_contents('./123.txt',date('Y-m-d H:i:s',time()).$key."\r\n", FILE_APPEND); 

发现每次刷新会出来2行数据; 

handle 方法中 resolveRequestSignature首先去解析请求签名 然后 resolveMaxAttempts 解析最大尝试次数

然后再到缓存中去对比之前的 $key 也就是签名 根据传入的$decayMinutes 得出结果,

resolveRequestSignature 再看这个方法 

签名的生成 采用的sh1 加密 有用户  就采用用户信息加密 没有采用 ip + 域名加密生成!

throw new RuntimeException(

    'Unable to generate the request signature. Route unavailable.'

); 但是这句话 就尴尬了, 

api的返回 会用英文的方式抛出异常,看来只能重写这个类了 

于是,新建在http下的middleware中 新建ThrottleRequests 然后继承

然后 修改kernel文件! 重新 书写异常抛出!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 盒模型页面渲染时,dom 元素所采用的 布局模型。可通过box-sizing进行设置。根据计算宽高的区域可分为: ...
    伽蓝star阅读 287评论 0 0
  • iOS 打包.framework(包括第三方、图片、xib、plist文件) 最近在研究如何制作自己的.frame...
    凋零的枫叶阅读 320评论 0 0
  • 原文地址:https://www.cnblogs.com/biehongli/p/6074713.html 1. ...
    惜小八阅读 310评论 0 0
  • 标签(空格分隔): Dart Flutter Dart在静态语法方面和Java非常相似,如类型定义、函数声明、泛型...
    黄昭鸿阅读 436评论 0 0
  • 有些人不属于你,但遇见了也挺好! 没有什么过不去,只有再也回不去! 所有的对不起,经过时间,都会变成来不及!
    良树毛阅读 173评论 0 0