如何为未登录用户设置速率限制?

时间:2017-12-01 14:39:57

标签: php yii2

public function behaviors()
    {
        return [
            'rateLimiter' => [
            'class' => \yii\filters\RateLimiter::className(),
            'enableRateLimitHeaders' =>false
        ],
    ];
    }

public function getRateLimit($request, $action)
    {
        // 6 - кол-во
        // 10 - это секунды
        return [6, 10];
    }

    public function loadAllowance($request, $action)
    {
        return [$this->allowance, $this->allowance_updated_at];
    }

    /**
     * Метод сохранит в кеш
     * @param \yii\web\Request $request
     * @param \yii\base\Action $action
     * @param int $allowance
     * @param int $timestamp
     */
    public function saveAllowance($request, $action, $allowance, $timestamp)
    {
        $this->allowance = $allowance;
        $this->allowance_updated_at = $timestamp;
        $this->save();
    }

重点是使用android应用程序进行日志记录而不使用会话。刚刚发送了响应令牌,该令牌是登录用户的ID。

1 个答案:

答案 0 :(得分:0)

  1. 您可以获取Cookie的帮助,我不确定Cookie在Android应用中的工作原理。您可以选择临时文件。

  2. 您可以记录未登录用户的IP,只要您想保留限制,就可以保留在数据库中。

  3. 但是,如果您通过上述任一方式实施此限制,用户可以通过删除Cookie /临时文件或IP来绕过限制。