PasswordStrength
Дата оновлення перекладу 2025-01-15
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, // Very strong password required
])]
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
(наприклад, за допомогою замикань сервіса).
По-перше, створіть користувацький алгоритм оцінки надійності пароля у спеціальному викличному класі:
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']