Cambiar los requisitos de contraseñas en Laravel

Por defecto, Laravel tiene unos requisitos de validación para las contraseñas. Por defecto, te requiere que sea de 8 caracteres, pero podemos definir reglas para ser mucho más estrictos.

Cambiar los requisitos de contraseñas en Laravel
Photo by regularguy.eth / Unsplash

Por defecto, Laravel tiene unos requisitos de validación para las contraseñas. Por defecto, te requiere que sea de 8 caracteres, pero podemos definir reglas para ser mucho más estrictos.

Podemos definir esta configuración desde uno de nuestros Service Provider, como el AppServiceProvider:

use Illuminate\Validation\Rules\Password;
 
/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Password::defaults(function () {
        return Password::min(8)
            ->mixedCase()
            ->uncompromised();
    });
}

Entre las reglas que podemos usar encontramos:

  • Password::min($nChars): Definir un mínimo de caracteres
  • Password::mixedCase(): Al menos una letra minúscula y una mayúscula
  • Password::numbers(): Al menos un número
  • Password::symbols(): Al menos un símbolo
  • Password::uncompromised(): Requiere que la contraseña no haya sido leakead en un hackeo global. Se comprobará de forma segura a través de https://haveibeenpwned.com/

Una de las cosas que podemos hacer es definir unas reglas distintas, más seguras, para nuestro entorno de producción:

use Illuminate\Validation\Rules\Password;
 
/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Password::defaults(function () {
        $rule = Password::min(8);
 
        return $this->app->isProduction()
                    ? $rule->mixedCase()->uncompromised()
                    : $rule;
    });
}