martinssipenko/password-policy

该软件包已被废弃,不再维护。作者建议使用 martinssipenko/password-policy 软件包。

管理密码策略的工具

1.0.0 2014-09-23 09:58 UTC

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特定的功能)。