php - 使用 API Token 认证的 Laravel 限速 API
问题描述
我正在为我的 Laravel 应用程序的用户构建一个安静的 API 来检索他们的数据。
目前的计划是他们可以在应用程序中生成一个 API 令牌,然后对他们的 API 请求进行身份验证。我不知道他们将从哪里提出请求。
我要实施速率限制的主要原因是减少意外/故意 DDOS 的影响,以及用户当前订阅包的一部分(必要)。因为后者,不同的用户可能有不同的费率。
Laravel 已经提供了一个内置的速率限制器,包括访问 User 表中指定的动态用户限制。
我想知道如何处理会话。从我所见,Laravel TokenGuard 类不会在请求之间存储用户。因此,在每个请求之间都会检索用户,甚至检索速率限制。如果我们仍然每次都进行数据库查询,这似乎破坏了速率限制器的意义。
处理此问题的适当方法是什么?
如果我编写自己的身份验证中间件,并将用户存储在会话中,那会起作用吗?从另一台服务器(不是浏览器)发送的请求是否甚至处理会话?
谢谢。
解决方案
每次有人访问您的站点时,您都在启动整个 Laravel 实例,这已经给您的服务器带来了压力。DDOS 不仅仅依赖于困扰您的数据库。如果有人决心对你进行 DDOS,你会注意到的!你所能做的就是缓解这个问题,所以不要太担心每个请求都有一个关联的数据库调用。
你可以有一个本地会话,但从长远来看,这是一个糟糕的设计决策,因为它会将状态引入你的服务器,这将使未来的扩展更加困难。(https://12factor.net/了解更多信息。)这就是 Laravel 使用存储在数据库中的用户的原因。
除非您正在做一些非常特别的事情,否则通常可以安全地假设 Laravel 正在使用适当的解决方案。他们做框架,这样你就可以担心业务逻辑!
最后,还有很多网站。很有可能,当您大到足以吸引尝试 DDOS 的人的注意时(请记住,这需要资源,因此也需要金钱),您可能会使用更复杂的系统。
推荐阅读
- python - 美丽的汤输出到数据框
- arrays - 将 JSON 字典转换为 Bash 字典?
- javascript - 使单词有意义的颜色
- angular - **ANGULAR** styles.css:1 GET https://"www.mysite.com"/"myfont.ttf" net::ERR_ABORTED 404(未找到)
- javascript - 产品加载时闪烁
- python - 如何验证 Django Rest Framework 中是否存在具有特定参与者(多对多字段)的对话对象?
- c++ - 12个实例后的libvlc硬件加速器无法解码图片错误
- pyspark - pyspark 在每个单词上加入数据框并将列表与字符串进行比较
- google-bigquery - 在 Bigquery 上创建计划查询时出错“创建计划查询时出错:呃”
- apache - htaccess 重定向参数并排除一个文件夹