Ограничьте количество попыток входа в систему в Laravel 5.7

У меня есть проект Laravel 5.7 с пользовательским логином. Как я могу позволить Laravel принять три попытки входа в систему после этого перенаправления страницы, ожидающей 2 или 3 минуты и т. д.?

public function loginPost(LoginRequest $request)
{
    if (Auth::attempt(array('user_name' => $request->user_name, 'password' => $request->user_pass)))
    {
        if(Auth::check())
            return redirect('/');
        else
            return back();
    }
    else
    {
        return "login faled call administrator";
    }
}

person Awar Pulldozer    schedule 05.10.2018    source источник
comment
Ознакомьтесь с трейтом ThrottlesLogin и скаффолдингом по умолчанию, включенным в Laravel.   -  person Devon    schedule 05.10.2018
comment
можешь написать код   -  person Awar Pulldozer    schedule 05.10.2018
comment
Можешь посмотреть код?   -  person Devon    schedule 05.10.2018


Ответы (4)


ты можешь сделать двумя способами

  1. добавить laravel bulit в throttle middleware в маршрут, например

    Route::post("/user/login","LoginController@login")->middleware("throttle:10,2");
    

он будет отправлять 10 запросов в 2 минуты

2. Используйте встроенный Trait ThrottlesLogins

сначала добавьте ThrottlesLogins trait в loginController и эту строку в методе входа

if ($this->hasTooManyLoginAttempts($request)) {
    $this->fireLockoutEvent($request);
    return $this->sendLockoutResponse($request);
}

if(attempt()) {
    $this->clearLoginAttempts($request);
}else {
  $this->incrementLoginAttempts($request);
}

если попытка успешна, добавьте эту строку в метод попытки

$this->clearLoginAttempts($request);

иначе не удастся войти в систему, затем добавьте эту строку в другое условие

$this->incrementLoginAttempts($request);

person Jignesh Joisar    schedule 05.10.2018

откройте контроллер входа в систему

App\Http\Controllers\Auth\LoginController.php

и вставьте его

protected $maxAttempts = 1;
protected $decayMinutes = 1;
person Mahedi Hasan Durjoy    schedule 24.03.2020
comment
Спасибо тебе за это! - person Marc; 10.06.2020

вам нужно использовать черту ThrottlesLogins в вашем контроллере, а затем вы можете управлять ею через свойства maxAttempts / decayMinutes

....
class TagController extends Controller
{
  use ThrottlesLogins;

  protected $maxAttempts = 5;
  protected $decayMinutes = 1;
...
person GetoX    schedule 01.10.2020

Откройте App\Http\Controllers\Auth\AuthController.php и добавьте следующие строки:

protected $maxLoginAttempts = 10; 
protected $lockoutTime = 120; 
person blal yassine    schedule 27.01.2021