Как увеличить время lockoutTime с секунд до минут в laravel после слишком большого количества неудачных попыток входа в систему?

Ниже приведены мои методы LoginController после трех неудачных попыток входа в систему, он покажет мне сообщение "Слишком много попыток входа в систему. Повторите попытку через 9 секунд". Я хочу увеличить время до 10 минут.

Мой логин Контроллер и конструктор

namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Http\Request;
use Auth;
use App\User;

class LoginController extends Controller
{
    use AuthenticatesUsers;
    protected $auth;
    protected $lockoutTime;
    protected $maxLoginAttempts;
    protected $redirectTo = '/';
    public function __construct(Guard $auth)
    {
        $this->middleware('guest', ['except' => 'logout']);
        $this->auth = $auth;
        $this->lockoutTime  = 1;    
        $this->maxLoginAttempts = 3; 
    }
    
}   

Способ входа в систему:

 public function login(Request $request)
        {
            $this->validateLogin($request);
             
            if ($this->hasTooManyLoginAttempts($request)) {
                $this->fireLockoutEvent($request);
                return $this->sendLockoutResponse($request)
            }else{
                $username   = $request->get('email');
                $password   = $request->get('password');
                $remember   = $request->get('remember');
                
                if ($this->auth->attempt([
                    'email'  => $username,
                    'password'  => $password,
                    'status' => 1,
                ], $remember == 1 ? true : false)) {
                    Auth::logoutOtherDevices($password);
                    $request->session()->regenerate();
                    $this->clearLoginAttempts($request);
                    if (Auth::check() && Auth::user()->roles()->first()->name == 'admin') {
                        return redirect('/admin/dashboard');    
                    } else {
                        return redirect('/institute/inst-dashboard');               
                    }
                }else {
                    $this->incrementLoginAttempts($request);
                     
                    return redirect()->back()
                        ->with('error','Incorrect username or password.')
                        ->with('status', 'danger')
                        ->withInput();
                }           
            }
        }

Слишком много методов

 protected function hasTooManyLoginAttempts(Request $request)
    {
        return $this->limiter()->tooManyAttempts(
            $this->throttleKey($request), $this->maxLoginAttempts, $this->lockoutTime
        );
    }     

1 ответ

В вашем app/Http/Controllers/Auth/LoginController.php, вы можете добавить два свойства:

class LoginController extends Controller
{
    protected $maxAttempts = 3; // Default is 5
    protected $decayMinutes = 2; // Default is 1

    // ...
}
Другие вопросы по тегам