olssonm / l5-zxcvbn
@dropbox 为 Laravel 实现的 zxcvbn 项目。使用 @bjeavons 的 zxcvbn-php。
Requires
- php: ^7.4|^8.0
- bjeavons/zxcvbn-php: ^1.2
- illuminate/support: ^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: >=4.0
- pestphp/pest: ^1.22|^2.0
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2024-09-04 07:42:42 UTC
README
为 Laravel 提供的 zxcvbn 的简单实现。此包允许您在应用中访问密码的“zxcvbn相关”数据,并且可以使用 zxcvbn 作为标准验证器。
使用 Zxcvbn-PHP 由 @bjeavons,它又受到 zxcvbn 由 @dropbox 的启发。
安装
通过 Composer
$ composer require olssonm/l5-zxcvbn
如果您希望使用依赖注入来使用 Zxcvbn
,或者只是想快速访问类 - 将别名添加到外观
'aliases' => [ 'Zxcvbn' => Olssonm\Zxcvbn\Facades\Zxcvbn::class ]
用法
如果您已将 Olssonm\Zxcvbn
添加为别名,您可以从应用中的任何位置轻松访问 Zxcvbn
“在应用中”
use Zxcvbn; class MyClass extends MyOtherClass { public function myFunction() { $zxcvbn = Zxcvbn::passwordStrength('password'); dd($zxcvbn); // array:9 [ // "password" => "password" // "guesses" => 3.0 // "guesses_log10" => 0.47712125471966 // "sequence" => [], // "crack_times_seconds" => array:4 [ // "online_throttling_100_per_hour" => 108.0 // "online_no_throttling_10_per_second" => 0.3 // "offline_slow_hashing_1e4_per_second" => 0.0003 // "offline_fast_hashing_1e10_per_second" => 3.0E-10 // ] // "crack_times_display" => array:4 [ // "online_throttling_100_per_hour" => "2 minutes" // "online_no_throttling_10_per_second" => "less than a second" // "offline_slow_hashing_1e4_per_second" => "less than a second" // "offline_fast_hashing_1e10_per_second" => "less than a second" // ] // "score" => 0 // "feedback" => array:2 [ // "warning" => "This is a top-10 common password" // "suggestions" => array:1 [ // 0 => "Add another word or two. Uncommon words are better." // ] // ] // "calc_time" => 0.020488977432251 // ] } }
尝试不同的密码和短语,结果可能会让您惊讶。查看 Zxcvbn-PHP 了解更多用法和示例。
作为验证器
该包为您的应用提供了两种类型的验证。 zxcvbn
和 zxcvbn_dictionary
。
zxcvbn
使用此规则,您可以设置短语需要使用 Zxcvbn 获得的最低分数才能通过。
语法
'input' => 'zxcvbn:min_value'
示例
$request->validate([ 'password' => 'required|zxcvbn:3' ]);
您还可以将规则初始化为对象
use Olssonm\Zxcvbn\Rules\Zxcvbn; function rules() { return [ 'password' => ['required', new Zxcvbn($minScore = 3)] ]; }
在这个例子中,密码至少需要有“分数”3才能通过验证。当然,您可能还需要在前端使用 zxcvbn-library,以便在提交表单之前让用户知道这一点。
zxcvbn_dictionary
这更有趣一些。zxcvbn_dictionary
允许您将用户的用户名和/或电子邮件与他们的密码一起输入(您需要提供用户输入的一件物品)。验证器会检查密码是否不在用户名中,或者它们是否过于相似。
语法
'input' => 'zxcvbn_dictionary:input1,input2'
示例
$request->validate([ 'password' => sprintf('required|zxcvbn_dictionary:%s,%s', $request->username, $request->email) ]);
use Olssonm\Zxcvbn\Rules\ZxcvbnDictionary; function rules() { return [ 'password' => ['required', new ZxcvbnDictionary($this->username)] ]; }
测试
$ composer test
或
$ phpunit
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。
© 2022 Marcus Olsson。