tadah-dev/laravel-zxcvbn

此包已被废弃且不再维护。未建议替代包。

由 @dropbox 为 Laravel 实现的 zxcvbn 项目。使用 @bjeavons 的 zxcvbn-php。

v4.5 2022-02-08 16:33 UTC

README

Latest Version on Packagist Total downloads Software License Build Status

zxcvbn

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_minzxcvbn_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