Я использую JWT для моего приложения Laravel + Angular. Я вижу, что Laravel 5.3 имеет функцию дросселирования входа в систему из коробки. Но как я могу заставить это работать при использовании JWT Auth? У меня есть следующий код, но дросселирование входа не работает. Несмотря на многочисленные неудачные попытки, я только получаю ошибку Invalid Login Details
, но его не дросселирования и показывая Too many logins
ошибку:Laravel 5.3 Вход для дроссельной заслонки при использовании JWT Auth
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $maxLoginAttempts=5;
protected $lockoutTime=300;
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
$this->validate($request, [
'email' => 'required',
'password' => 'required',
]);
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return response()->json(['error' => 'Too many logins'], 400);
}
try {
if (! $token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'Invalid Login Details'], 401);
}
} catch (JWTException $e) {
// something went wrong
$this->incrementLoginAttempts($request);
return response()->json(['error' => 'Could Not Create Token'], 500);
}
// if no errors are encountered we can return a JWT
return response()->json(compact('token'));
}
}
Как использовать эту функцию с помощью использования JWTAuth? Вы можете мне помочь?
спасибо @Rafal за ваш ответ и хорошую точку. Я добавил инкремент в попытке входа в систему, но он по-прежнему показывает сообщение об ошибке «Недействительные данные входа в систему» даже после неудачных попыток. – Neel
Какой кеш вы используете, он работает нормально? RateLimiter использует кеш, чтобы это могло быть проблемой. –
К сожалению, вы имеете в виду драйвер кэша? Я установил его как 'CACHE_DRIVER = array'. Также было бы причиной использования JWT вместо по умолчанию Auth? – Neel