Hola, estoy usando el restablecimiento de contraseña POR DEFECTO de Laravel, y funciona perfectamente, pero hay un pequeño problema, puedo solicitar 'restablecimiento de contraseña' cada minuto y no me gusta, así que mi pregunta es cómo reducir esa solicitud vez como, quiero poder hacer 2 solicitudes cada 5m.

/ForgotPasswordController.php

 public function __construct()
    {
        if (preg_match('/en/',url()->previous())){
            App::setLocale('en');
        }else{
            App::setLocale('ru');
        }

        $this->middleware('guest');

    }
0
David J. 26 jun. 2020 a las 20:04

2 respuestas

La mejor respuesta

Puede usar el middleware ThrottleRequests que Laravel proporciona de manera predeterminada, ya sea definiéndolo en el constructor del controlador:

public function __construct()
{
    if (preg_match('/en/', url()->previous())) {
        App::setLocale('en');
    } else {
        App::setLocale('ru');
    }

    $this->middleware('throttle:2,5');
    $this->middleware('guest');
}

... o añadiéndolo a la definición de ruta.

Route::post('/password/reset', 'ForgotPasswordController@yourFunction')
    ->middleware('throttle:2,5');

Información adicional sobre los parámetros: https://www.cloudways.com / blog / laravel-and-api-rate-limit /

0
Chris Forrence 26 jun. 2020 a las 17:14

La mejor manera de hacer esto sería usar una comparación de tiempo o un depósito con fugas que simplemente registra la última solicitud. El tiempo para restablecer la contraseña debe registrarse en el backend y luego los condicionales se pueden usar para garantizar que no se puedan realizar dos restablecimientos en menos de 5 minutos. Ver estos ejemplos:

0
James-Riordan 26 jun. 2020 a las 17:14