tadah-dev / laravel-zxcvbn
由 @dropbox 为 Laravel 实现的 zxcvbn 项目。使用 @bjeavons 的 zxcvbn-php。
Requires
- php: ^7.3|^8.0
- bjeavons/zxcvbn-php: ^1.2
- illuminate/support: ^7.0|^8.0|^9.0
Requires (Dev)
- orchestra/testbench: >=4.0
- phpunit/phpunit: ^8.0|^9.0
This package is not auto-updated.
Last update: 2022-09-10 00:16:52 UTC
README
Laravel 的 zxcvbn 简单实现。此包允许您在应用中访问密码的“zxcvbn-related”数据,并且可以将 zxcvbn 用作标准验证器。
使用 Zxcvbn-PHP 由 @bjeavons 和 @mkopinsky,它又受到 zxcvbn 由 @dropbox 的启发。
安装
通过 Composer
$ composer require olssonm/l5-zxcvbn
如果您希望通过依赖注入使用 Zxcvbn
,或者只需要一种快速访问类的方法——请在门面中添加一个别名
'aliases' => [ 'Zxcvbn' => Olssonm\Zxcvbn\Facades\Zxcvbn::class ]
使用方法
如果您已将 Olssonm\Zxcvbn
添加为别名,您可以从应用中的任何位置轻松访问 Zxcvbn
“在应用中”
<?php use Zxcvbn; class MyClass extends MyOtherClass { public function myFunction() { $zxcvbn = Zxcvbn::passwordStrength('password'); dd($zxcvbn); // array:9 [ // "password" => "password" // "guesses" => 3 // "guesses_log10" => 0.47712125471966 // "sequence" => array:1 [] // "crack_times_seconds" => array:4 [] // "crack_times_display" => array:4 [] // "score" => 0 // "feedback" => array:2 [] // "calc_time" => 0.042769908905029 // ] } }
尝试不同的密码和短语,结果可能会让您感到惊讶。查看 Zxcvbn-PHP 了解更多用途和示例。
作为验证器
该包提供了两个不同的验证规则,您可以使用它们; zxcvbn_min
和 zxcvbn_dictionary
。
zxcvbn_min
zxcvbn_min
允许您设置一个规则,要求正在测试的值应遵守的最小得分。
语法
input' => 'zxcvbn_min:min_value'
示例
<?php $data = ['password' => 'password']; $validator = Validator::make($data, [ 'password' => 'zxcvbn_min:3|required', ], [ 'password.zxcvbn_min' => 'Your password is not strong enough!' ]);
在此示例中,密码的“得分”至少应为 3 才能通过验证。当然,您可能还需要在客户端使用 zxcvbn-library,以便在使用表单之前让用户知道这一点...
zxcvbn_dictionary
这更有趣。 zxcvbn_dictionary
允许您输入用户的用户名和/或电子邮件地址以及他们的密码。验证器检查密码是否不在用户名中,或者它们过于相似。
语法
'input' => 'xcvbn_dictionary:username,email'
示例
<?php /** * Example 1, pass */ $password = '31??2sa//"dhjd2askjd19sad19!!&!#"'; $data = [ 'username' => 'user', 'email' => 'trash@thedumpster.com' ]; $validator = Validator::make($password, [ 'password' => sprintf('required|zxcvbn_dictionary:%s,%s', $data['username'], $data['email']) ]); dd($validator->passes()); // true /** * Example 2, fail */ $password = 'mycomplicatedphrase'; $data = [ 'username' => 'mycomplicatedphrase', 'email' => 'mycomplicatedphrase@thedumpster.com' ]; $validator = Validator::make($password, [ 'password' => sprintf('required|zxcvbn_dictionary:%s,%s', $data['username'], $data['email']) ]); dd($validator->passes()); // false
测试
$ composer test
或
$ phpunit
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。
© 2020 Marcus Olsson。