AdminUserAccessToken.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * FecShop file.
  4. *
  5. * @link http://www.fecshop.com/
  6. * @copyright Copyright (c) 2016 FecShop Software LLC
  7. * @license http://www.fecshop.com/license/
  8. */
  9. namespace fecshop\models\mysqldb\adminUser;
  10. use Yii;
  11. use fecshop\models\mysqldb\AdminUser;
  12. use yii\base\NotSupportedException;
  13. use yii\behaviors\TimestampBehavior;
  14. use yii\web\IdentityInterface;
  15. use yii\filters\RateLimitInterface;
  16. /**
  17. * @author Terry Zhao <2358269014@qq.com>
  18. * @since 1.0
  19. */
  20. class AdminUserAccessToken extends AdminUser implements IdentityInterface ,RateLimitInterface
  21. {
  22. # 速度控制 6秒内访问3次,注意,数组的第一个不要设置1,设置1会出问题,一定要
  23. #大于2,譬如下面 6秒内只能访问三次
  24. # 文档标注:返回允许的请求的最大数目及时间,例如,[100, 600] 表示在600秒内最多100次的API调用。
  25. public function getRateLimit($request, $action){
  26. $rateLimit = Yii::$app->params['rateLimit'];
  27. if(is_array($rateLimit['limit']) && !empty($rateLimit['limit'])){
  28. return $rateLimit['limit'];
  29. }else{
  30. return [120, 60];
  31. }
  32. }
  33. # 文档标注: 返回剩余的允许的请求和相应的UNIX时间戳数 当最后一次速率限制检查时。
  34. public function loadAllowance($request, $action){
  35. //return [1,strtotime(date("Y-m-d H:i:s"))];
  36. //echo $this->allowance;exit;
  37. return [$this->allowance, $this->allowance_updated_at];
  38. }
  39. # allowance 对应user 表的allowance字段 int类型
  40. # allowance_updated_at 对应user allowance_updated_at int类型
  41. # 文档标注:保存允许剩余的请求数和当前的UNIX时间戳。
  42. public function saveAllowance($request, $action, $allowance, $timestamp){
  43. $this->allowance = $allowance;
  44. $this->allowance_updated_at = $timestamp;
  45. $this->save();
  46. }
  47. /**
  48. * @inheritdoc
  49. */
  50. public function behaviors()
  51. {
  52. return [
  53. TimestampBehavior::className(),
  54. ];
  55. }
  56. }