Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Не работает стандартная защита авторизации бриз от множественного запроса 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();
}
}
Не в сети
Разобрался в чём проблема, но не понял как устранить ,
RateLimiter::attempts($this->throttleKey()); - почему-то не запоминает количество попыток и всегда выводит 1, почему так происходит?
Не в сети
Скорее всего не вызывается hit(), который этот счётчик увеличивает. Например потому, что до него не доходит управление из-за dd()
Если сложность задачи превышает твой уровень понимания, возвращайся к простому.
Тестируй то же самое на простом примере БЕЗ лишнего кода.
Прежде чем попытаться переложить трудности на чужие плечи, включи xdebug и посмотри что именно происходит.
Ты умеешь вставлять dd(), теперь убери их все (!!!) и отлаживайся без остановки скрипта.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Все проверенно, hit работает, RateLimiter почемуто не запоминает число попыток, это скорее всего из-за кеша который я поставил CACHE_DRIVER=array ибо с другим драйвером не работают тенанты из другого моего поста.
Не в сети