2017-01-18 11:13:44 2256次浏览 3条回答 0 悬赏 10 金钱

我现在需要提供给app端一些接口, 请问是否可以 实现 限制同一个ip在某段时间内请求的次数, 看了网上提供的 restful,全都是复制粘贴, 其内容只有提及到 针对某个用户实现请求次数限制, 而且对应的 方法都是写在model里面的,

我现在要提供很多个接口, 并且数据也是来自多个model表里面的,,我现在想要实现的只有 限制同一个ip在某段时间内请求的次数 ,

望路过知道的朋友指点一下!!!!!!!!!

  • 回答于 2017-01-18 11:24 举报

    不是和针对某个用户实现请求次数限制一样的道理吗,记录在表里面,也可以尝试下用seesion

    2 条回复
    回复于 2017-01-18 18:25 回复

    但是我试了下,好像必须要登陆,而且那个RateLimiter里面的写死了只能是 user 组件, 但是我除了要限制非登陆用户调用接口的频率外,还会有 用户登陆 这步,,,,,,

    回复于 2017-01-20 10:15 回复

    acf用过没 就是限制没用用户也可访问 ,

  • 回答于 2017-01-20 22:14 举报

    我觉得这个可以在nginx端通过限流配置实现,如果同一个ip一定时间内超过一定数量 就直接返回404或者500页面

    觉得很赞
  • 回答于 2017-02-28 15:27 举报

    说一下我的思路

    首先获取到用户IP,用该IP作为key保存到缓存中,key中保存一些信息,包括时间戳,请求剩余次数

    然后再次请求的时候获取到key中的时间戳和当前时间对比,如果小于一段时间 剩余次数减一,更新key

    如果大于一段时间 重新记录时间,剩余次数初始化 更新key。

您需要登录后才可以回答。登录 | 立即注册
xiurenhui
职场新人

xiurenhui

注册时间:2015-12-01
最后登录:2018-09-09
在线时长:2小时56分
  • 粉丝0
  • 金钱45
  • 威望0
  • 积分65

热门问题