fadonougbo / password-policy
密码验证库
v1.0.0
2024-03-28 12:02 UTC
Requires (Dev)
- pestphp/pest: ^2.34
This package is auto-updated.
Last update: 2024-09-27 19:11:03 UTC
README
PasswordPolicy 是一个库,允许定义各种密码验证规则。
安装
composer require fadonougbo/password-policy
用法
创建 PasswordPolicy 的新实例
use PasswordPolicy\PasswordPolicy; $policy=new PasswordPolicy('paswword');
现在添加规则
use PasswordPolicy\PasswordPolicy; $status=(new PasswordPolicy('password')) ->withLowercase() // [a-z] ->withUppercase() // [A-Z] ->withNumber() // [0-9] ->withSymbol() // [\W_] ->getStatus(); var_dump($status);
true
方法 withLowercase
、withUppercase
、withSymbol
和 withNumber
可以接受最小值或最大值作为参数,代表接受的重复次数。
use PasswordPolicy\PasswordPolicy; $password=$_POST['password']; $status=(new PasswordPolicy($password)) ->withLowercase(2) // minimum 2 lowercase letters ->withUppercase(2,3) // 2 to 3 uppercase letters ->withNumber(max:1) // 0 or 1 number ->withSymbol(1,1) // 1 symbol ->getStatus(); if($status) { echo 'Very good'; }else { echo 'error'; }
您可以使用 getData
方法获取更多信息。
use PasswordPolicy\PasswordPolicy; $data=(new PasswordPolicy('%USERmsjah22')) ->withLowercase() // 0 or more lowercase letters ->withUppercase(4) // minimum 4 uppsercase letters ->withSymbol(max:3) // 0 to 3 symbol ->getData(); echo $data->password; echo $data->status; echo $data->length;
%USERmsjah22
true
12
注意:如果您想要密码中完全不含数字,您必须在 withNumber
方法中指定。对于小写字母、大写字母和符号也是如此。
use PasswordPolicy\PasswordPolicy; $password=$_POST['password']; $status=(new PasswordPolicy($password)) ->withLowercase(0,0) // 0 lowercase letter ->withUppercase(0,0) // 0 uppercase letter ->withNumber() // 0 or more numbers ->getStatus();
方法 blockSameCharacters
如果密码包含一定数量的重复字符,则会使其无效。
例如:aaaaaa ,bbbbb ,password11111
use PasswordPolicy\PasswordPolicy; $data=(new PasswordPolicy('user222222')) ->blockSameCharacter(4) //Does not accept passwords with a repeated character 4 or more times. ->getData(); echo $data->status;
false
如果您想阻止使用先前密码的用户,可以使用 blockIf
方法
use PasswordPolicy\PasswordPolicy; $oldPasswordHash='$2y$10$i8FPWdu/4B.GV4Cl8Hq80.9p/TjrGncCrhkQYjradFpy6o/CAJnsG'; $status=(new PasswordPolicy('newpassword')) ->blockIf(function($password) use($oldPasswordHash) { return !password_verify($password,$oldPasswordHash); }) ->getStatus(); if($status) { echo 'Yes, it is ok'; }else { echo 'You cannot use an old password.'; }
您可以使用 blockCommonPasswords
阻止世界上一些最常见的密码,如 azerty 或 12345。
use PasswordPolicy\PasswordPolicy; $response=(new PasswordPolicy('iloveyou')) ->blockCommonPasswords("This password is too weak") ->getData(); if($response->status) { echo 'Yes, it is ok'; }else { echo $response->messages['blockCommonPasswords']; }
This password is too weak
注意:如果您需要定义一个不受欢迎的密码列表,可以使用 blockListContent
。
使用 setLength
定义密码的大小
use PasswordPolicy\PasswordPolicy; $response=(new PasswordPolicy('JohnD0e2oo2')) ->setLength(6) // min 6 characters ->getData();