@pashaa

Как сделать Rate limit для незалогиненного пользователя?

Класс реализующий интерфесы
class Customer extends ActiveRecord implements IdentityInterface,RateLimitInterface
{
    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();
    }
}

$behaviors = parent::behaviors();
        return [
           'rateLimiter' => [
               'class' => RateLimiter::className(),
           ]
       ];
        return $behaviors;

Когда отправляю запрос в базе ничего не меняется. Аутентификация происходит по почте и паролю с возвратом токена или аналогично но вход по токену. Происходит проверка в бд на наличие пользователя.
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы