martinssipenko / password-policy
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2019-12-16 09:48:10 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-Z
lowercase
-a-z
uppercase
-A-Z
digit
-0-9
symbol
-^a-zA-Z0-9
(换句话说,非字母数字)null
-\0
alnum
-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);
返回结果是包含两个成员的 stdclass 对象,result 和 messages。
-
$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特定的功能)。