evotodi / password-meter-bundle
symfony 6 的密码计,补充了 https://github.com/HamedFathi/PasswordMeter 和 passwordmeter.com
Requires
- php: ^8
- symfony/console: ^6.0|^7.0
- symfony/framework-bundle: ^6.0|^7.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/config: ^6.0|^7.0
- symfony/dependency-injection: ^6.0|^7.0
- symfony/phpunit-bridge: ^6.0|^7.0
- symfony/test-pack: ^1.0
This package is auto-updated.
Last update: 2024-09-10 17:43:25 UTC
README
Password Meter Symfony Bundle
PasswordMeter 是一个与 JavaScript 的 HamedFathi/PasswordMeter 相等的 PHP 克隆。
安装
使用以下命令安装包
composer require evotodi/password-meter-bundle
使用方法
此包提供了一个服务,可以生成与 passwordmeter.com 和 HamedFathi/PasswordMeter 相同的密码评分。
配置
# config/packages/evotodi_password_meter.yaml evotodi_password_meter: # Custom password requirements provider class requirements_provider: null # Custom password score range provider class score_provider: null
实现密码要求
默认要求为空,将仅返回评分和状态。
创建一个自定义要求提供程序,将返回匹配您自定义要求的错误数组。
首先创建一个实现 Evotodi\PasswordMeterBundle\RequirementsInterface
的类,并实现 getRequirements
方法。从 getRequirements
方法返回一个新的 Evotodi\PasswordMeterBundle\Models\Requirements
,其中包含您所需的密码要求。
// src/Service/PasswordMeterRequirementsProvider.php namespace App\Service; use Evotodi\PasswordMeterBundle\Interfaces\RequirementsInterface; use Evotodi\PasswordMeterBundle\Models\Requirements; class PasswordMeterRequirementsProvider implements RequirementsInterface { public function getRequirements(): Requirements { return new Requirements(minLength: 10); } }
然后设置以下配置。如果不存在,您可能需要创建配置文件。
# config/packages/evotodi_password_meter.yaml evotodi_password_meter: requirements_provider: App\Service\PasswordMeterRequirementsProvider
实现自定义密码评分范围
创建一个实现 Evotodi\PasswordMeterBundle\ScoreRangeInterface
的类,并实现 getScoreRange
方法。从 getScoreRange
方法返回一个新的评分范围数组。
// src/Service/PasswordMeterScoreProvider.php namespace App\Service; use Evotodi\PasswordMeterBundle\Interfaces\ScoreRangeInterface; class PasswordMeterScoreProvider implements ScoreRangeInterface { public function getScoreRange(): array { return [ '40' => 'veryWeak', // 001 <= x < 040 '80' => 'weak', // 040 <= x < 080 '120' => 'medium', // 080 <= x < 120 '180' => 'strong', // 120 <= x < 180 '200' => 'veryStrong', // 180 <= x < 200 '_' => 'perfect', // >= 200 ]; } }
数组必须包含至少2个元素,且最后一个元素键必须为 '_'
。
然后设置以下配置。如果不存在,您可能需要创建配置文件。
# config/packages/evotodi_password_meter.yaml evotodi_password_meter: score_provider: App\Service\PasswordMeterScoreProvider
贡献
欢迎贡献!
请创建详细的issue和pull request。
许可证
此包是免费软件,根据 MIT 许可证 的条款分发。
更新
2024-01-10: 添加对 Symfony 7 的支持 2023-01-30: 初次发布