2019-03-18

作者: 路西法Doom | 来源:发表于2019-03-18 18:22 被阅读0次

            好久没写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文件! 重新 书写异常抛出!

    相关文章

      网友评论

        本文标题:2019-03-18

        本文链接:https://www.haomeiwen.com/subject/fiebmqtx.html