equalent / password-policy
管理密码策略的工具
Requires
- php: >=5.3.0
- ircmaxell/security-lib: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^1.11
- phpunit/phpunit: ^4.8|^5.0
This package is not auto-updated.
Last update: 2024-10-01 01:52:42 UTC
README
一个用于在PHP和JS中检查和创建密码策略的工具。
安装
使用composer设置自动加载器
php composer.phar install
需要composer自动加载文件
require_once 'vendor/autoload.php';
使用方法
要使用,首先实例化核心策略对象
$policy = new \PasswordPolicy\Policy;
然后,添加规则
$policy->contains('lowercase', $policy->atLeast(2));
支持的规则辅助方法包括
-
contains($class, $constraint = null, $description = ''):检查密码是否包含字符类支持的快捷类
letter-a-zA-Zlowercase-a-zuppercase-A-Zdigit-0-9symbol-^a-zA-Z0-9(换句话说,非字母数字)null-\0alnum-a-zA-Z0-9
第二个参数是约束(可选)
-
length($constraint):检查密码长度是否匹配约束 -
endsWith($class, $description = ''):检查密码是否以字符类结束。 -
startsWith($class, $description = ''):检查密码是否以字符类开始。 -
notMatch($regex, $description):检查密码是否不匹配正则表达式。 -
match($regex, $description):检查密码是否匹配正则表达式。
支持的约束
策略还具有创建约束的快捷辅助方法
-
atLeast($n):至少匹配参数相当于
between($n, PHP_INT_MAX) -
atMost($n):最多匹配参数相当于
between(0, $n) -
between($min, $max):在 $min 和 $max 之间匹配数量 -
never():不匹配相当于
between(0, 0)
测试策略
设置策略后,您可以使用PHP中的test($password)方法进行测试。
$result = $policy->test($password);
返回结果是包含result和messages两个成员的stdclass对象。
-
$result->result- 一个布尔值,表示密码是否有效。 -
$result->messages- 一个消息数组
每个消息都是一个包含两个成员的对象
-
$message->result- 一个布尔值,表示规则是否通过 -
$message->message- 规则的文本描述
使用JavaScript
构建策略后,可以调用toJavaScript()生成一个JS匿名函数以注入到JS代码中。
$js = $policy->toJavaScript();
echo "var policy = $js;";
然后,JS中的策略对象基本上是对$policy->test($password)的包装,表现相同(相同的返回值)。
var result = policy(password);
if (!result.result) {
/* Process Messages To Display Failure To User */
}
对于JavaScript的一个注意,您编写的任何正则表达式都需要用/分隔,并且是有效的JS正则表达式(不允许使用PREG特定功能)。