Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 02.06.2021 18:17:38

Не работает стандартная защита BREEEZE от множественного запроса

Не работает стандартная защита авторизации бриз от множественного запроса RateLimiter, я пробовал ставить
RateLimiter::tooManyAttempts($this->throttleKey(), 5)  вместо 5 1 и ничего не работает, RateLimiter::tooManyAttempts($this->throttleKey(), 5)) всегда возвращает false, что делать кто знает?

 public function authenticate()
    {
        $this->ensureIsNotRateLimited();

        if (!Auth::check()) {
            RateLimiter::hit($this->throttleKey());

            throw ValidationException::withMessages([
                'phone' => __('auth.failed'),
            ]);
        }

        RateLimiter::clear($this->throttleKey());
    }

    /**
     * Ensure the login request is not rate limited.
     *
     * @return void
     *
     * @throws \Illuminate\Validation\ValidationException
     */
    public function ensureIsNotRateLimited()
    {
        if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) {
            return;
        }

        event(new Lockout($this));

        $seconds = RateLimiter::availableIn($this->throttleKey());


        throw ValidationException::withMessages([
            'phone' => trans('auth.throttle', [
                'seconds' => $seconds,
                'minutes' => ceil($seconds / 60),
            ]),

        ]);

    }

    /**
     * Get the rate limiting throttle key for the request.
     *
     * @return string
     */
    public function throttleKey()
    {
        return Str::lower($this->input('phone')).'|'.$this->ip();
    }
}

Не в сети

#2 03.06.2021 10:10:53

Re: Не работает стандартная защита BREEEZE от множественного запроса

Разобрался в чём проблема, но не понял как устранить ,
RateLimiter::attempts($this->throttleKey());  - почему-то не запоминает количество попыток и всегда выводит 1, почему так происходит?

Не в сети

#3 07.06.2021 15:24:36

Re: Не работает стандартная защита BREEEZE от множественного запроса

Скорее всего не вызывается hit(), который этот счётчик увеличивает. Например потому, что до него не доходит управление из-за dd()

Если сложность задачи превышает твой уровень понимания, возвращайся к простому.
Тестируй то же самое на простом примере БЕЗ лишнего кода.
Прежде чем попытаться переложить трудности на чужие плечи, включи xdebug и посмотри что именно происходит.
Ты умеешь вставлять dd(), теперь убери их все (!!!) и отлаживайся без остановки скрипта.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#4 08.06.2021 13:33:08

Re: Не работает стандартная защита BREEEZE от множественного запроса

Все проверенно, hit работает,  RateLimiter почемуто не запоминает число попыток, это скорее всего из-за кеша который я поставил CACHE_DRIVER=array ибо с другим драйвером не работают тенанты  из другого моего поста.

Не в сети

Подвал раздела