PasswordStrength
Дата обновления перевода 2025-02-05
PasswordStrength
Валидирует, что заданный пароль достиг минимальной надёжности, требуемой ограничением. Надёжность пароля не оценивается с помощью набора заранее определённых правил (включение числа, использование строчных и заглавных букв и т.д.), а путём измерения энтропии пароля на основе его длины и количества использованных уникальных символов.
??????????? ? | ???????? ??? ?????? |
????? | PasswordStrength |
????????? | PasswordStrengthValidator |
Базовое применение
Следующее ограничение гарантирует, что свойство rawPassword
класса User
достигнет
минимальной надёжности, требуемой ограничением. По умолчанию минимально требуемая
оценка равна 2
.
1 2 3 4 5 6 7 8 9 10
// src/Entity/User.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class User
{
#[Assert\PasswordStrength]
protected $rawPassword;
}
Доступные опции
minScore
тип: integer
по умолчанию: PasswordStrength::STRENGTH_MEDIUM
(2
)
Минимальная требуемая надёжность пароля. Доступны такие константы:
PasswordStrength::STRENGTH_WEAK
=1
PasswordStrength::STRENGTH_MEDIUM
=2
PasswordStrength::STRENGTH_STRONG
=3
PasswordStrength::STRENGTH_VERY_STRONG
=4
PasswordStrength::STRENGTH_VERY_WEAK
доступна, но используется только внутренне или
же пользовательским оценщиком надёжности пароля.
1 2 3 4 5 6 7 8 9 10 11 12
// src/Entity/User.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class User
{
#[Assert\PasswordStrength([
'minScore' => PasswordStrength::STRENGTH_VERY_STRONG, // Требуется очень надёжный пароль
])]
protected $rawPassword;
}
message
тип: string
по умолчанию: Надёжность пароля слишком низкая. Пожалуйста, используйте более надёжный пароль.
Сообщение по умолчанию, отображаемое, если пароль не достигает минимальной требуемой оценки.
1 2 3 4 5 6 7 8 9 10 11 12
// src/Entity/User.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class User
{
#[Assert\PasswordStrength([
'message' => 'Le mot de passe est trop faible. Veuillez utiliser un mot de passe plus fort.'
])]
protected $rawPassword;
}
Настройка оценки надежности пароля
7.2
Функция настройки оценки надежности пароля была представлена в Symfony 7.2.
По умолчанию это ограничение рассчитывает надежность пароля на основе его длины и количества используемых уникальных символов. Вы можете получить рассчитанную надежность пароля (например, чтобы отобразить ее в пользовательском интерфейсе) с помощью следующей статической функции:
1 2 3
use Symfony\Component\Validator\Constraints\PasswordStrengthValidator;
$passwordEstimatedStrength = PasswordStrengthValidator::estimateStrength($password);
- Если вам нужно переопределить алгоритм оценки надежности пароля по умолчанию, вы можете передать
-
Closure
конструктору PasswordStrengthValidator (например, с помощью замыканий сервиса closures).
Сначала создайте собственный алгоритм оценки надежности пароля в специальном вызываемом классе:
1 2 3 4 5 6 7 8 9 10 11 12
namespace App\Validator;
class CustomPasswordStrengthEstimator
{
/**
* @return PasswordStrength::STRENGTH_*
*/
public function __invoke(string $password): int
{
// Ваш собственный алгоритм оценки надежности пароля
}
}
Затем сконфигурируйте сервс PasswordStrengthValidator, чтобы использовать вашего собственного оценщика:
1 2 3 4 5 6 7
# config/services.yaml
services:
custom_password_strength_estimator:
class: App\Validator\CustomPasswordStrengthEstimator
Symfony\Component\Validator\Constraints\PasswordStrengthValidator:
arguments: [!closure '@custom_password_strength_estimator']