速率限制
为防止滥用,你应该考虑增加速率限制到您的API。 例如,您可以限制每个用户的API的使用是在10分钟内最多100次的API调用。 如果一个用户同一个时间段内太多的请求被接收, 将返回响应状态代码 429 (这意味着过多的请求)。
要启用速率限制, [[yii\web\User::identityClass|user identity class]] 应该实现 [[yii\filters\RateLimitInterface]]. 这个接口需要实现以下三个方法:
-
getRateLimit()
: 返回允许的请求的最大数目及时间,例如,[100, 600]
表示在600秒内最多100次的API调用。 -
loadAllowance()
: 返回剩余的允许的请求和相应的UNIX时间戳数 当最后一次速率限制检查时。 -
saveAllowance()
: 保存允许剩余的请求数和当前的UNIX时间戳。
你可以在user表中使用两列来记录容差和时间戳信息。 loadAllowance()
和 saveAllowance()
可以通过实现对符合当前身份验证的用户 的这两列值的读和保存。为了提高性能,你也可以 考虑使用缓存或NoSQL存储这些信息。
一旦 identity 实现所需的接口, Yii 会自动使用 [[yii\filters\RateLimiter]] 为 [[yii\rest\Controller]] 配置一个行为过滤器来执行速率限制检查。 如果速度超出限制 该速率限制器将抛出一个 [[yii\web\TooManyRequestsHttpException]]。 你可以在你的 REST 控制器类里配置速率限制,
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['rateLimiter']['enableRateLimitHeaders'] = false;
return $behaviors;
}
当速率限制被激活,默认情况下每个响应将包含以下HTTP头发送 目前的速率限制信息:
-
X-Rate-Limit-Limit
: 同一个时间段所允许的请求的最大数目; -
X-Rate-Limit-Remaining
: 在当前时间段内剩余的请求的数量; -
X-Rate-Limit-Reset
: 为了得到最大请求数所等待的秒数。
你可以禁用这些头信息通过配置 [[yii\filters\RateLimiter::enableRateLimitHeaders]] 为false, 就像在上面的代码示例所示。
相关推荐
yii2-advanced-api, 具有 RESTful API设置的Yii2高级模板 2高级应用程序模板中的 rest APIYii2高级应用程序模板,配置了 RESTful API 。 查看 http://budiirawan.com/setup-restful-api-yii2/ 了解更详细的解释安装 ...
主要介绍了Yii2 RESTful中api的使用及开发实例详解的相关资料,需要的朋友可以参考下
今天通过本文给大家讲下Yii2 RESTful的格式化响应,授权认证和速率限制三个部分,对yii2 restful api相关知识感兴趣的朋友一起看看吧
主要介绍了Yii2.0 RESTful API 基础配置教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Yii 2和PHP Web应用程序开发
yii2框架restful url接口,认证内容的开发的分享,后续还有接口多版本控制的内容
2本yii方面的书,使用yii敏捷开发web应用, cookbook, 都是初学者必备
主要给大家介绍了关于yii2项目实战之restful api授权验证的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
使用yii\rest\UrlRule来自动映射控制器的 restful 路由,简单快捷,缺点是必须得按规定好的方法名去写业务。 映射的规则如下,当然,你可以修改源码为你的习惯: public $patterns = [ 'PUT,PATCH {id}' => '...
请注意,这是: 1 Yii2教程 2 英文版
Yii-rest-rbac 后台RBAC配置写在前面本篇只讲述如何使用Yii-rest-rbac进行 restful API认证和权限管理,关于原理,请移步(目前未完成)下载安装 composer require clement/yii-rest-rbacor ...创建数据表使用@vendor\\...
restful例子
Yii2: 一个现代的PHP开发框架为专业的Web开发设计
本文实例分析了Yii2中Restful API原理。分享给大家供大家参考,具体如下: Yii2 有个很重要的特性是对 Restful API的默认支持, 通过短短的几个配置就可以实现简单的对现有Model的RESTful API 这里通过分析rest部分...
Yii 2.0 权威指南 本教程的发布遵循 Yii 文档使用许可. ...RESTful Web 服务 已定稿 快速入门 已定稿 资源 已定稿 路由 已定稿 格式化响应 已定稿 授权验证 已定稿 速率限制 已定稿 版本化 已定稿 错误处理 已定稿 测试
yii2-oauth2-server, 用于实现OAuth2服务器的包装器( https yii2-oauth2-server用于实现OAuth2服务器的包装器( https://github.com/bshaffer/oauth2-server-php 插件)安装安装这里扩展的首选方法是通过 Composer 。...