joshralph/password-policy

此包最新版本(0.3.0)没有提供许可信息。

一个用于直观创建密码策略并对主题进行验证的库。

0.3.0 2020-09-16 20:35 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:47:45 UTC


README

Build Status

一个流畅的密码策略构建库。此包可以独立使用,也可以轻松添加到Laravel中。

目录

安装

$ composer require joshralph/password-policy

使用方法

策略构建器

$builder = new \PasswordPolicy\PolicyBuilder(new \PasswordPolicy\Policy);
$builder->minLength(6)
    ->upperCase();

以下任何方法都可以链在构建器类上以构建您的密码策略。

minLength(length)

长度

类型:int

密码必须包含的最小字符数。

maxLength(length)

长度

类型:int

最大字符数,密码必须包含。

upperCase([min])

min

类型:int

密码必须包含的最小大写字母数。

lowerCase([min])

min

类型:int

密码必须包含的最小小写字母数。

digits([min])

min

类型:int

密码必须包含的最小数字数。

specialCharacters([min])

min

类型:int

密码必须包含的最小特殊字符数。

doesNotContain(phrases [,phrases])

phrases

类型:string|array

密码不应包含的短语

示例

->doesNotContain('password', $firstName, $lastName)

minPassingRules(passesRequired, ruleSet)

passesRequired

类型:int

需要通过ruleSet中规则的最小数量,以便此规则通过

ruleSet

类型:\Closure

一个闭包,它被传递一个新的PolicyBuilder实例。

示例

// One of these rules must pass
->minPassingRules(1, function (PolicyBuilder $builder) {
    $builder->doesNotContain('password')
        ->minLength(10);
})

Laravel

如果您是Laravel用户,此包可以无缝集成到您的验证器中。

安装包

首先添加以下服务提供者。

// config/app.php

'providers' => [
    // ...
    \PasswordPolicy\Providers\Laravel\PasswordPolicyServiceProvider::class,
],

定义策略

在应用程序服务提供者(例如AppServiceProvider.php)中,您可以开始定义密码策略。

// App/Providers/AppServiceProvider.php

// use PasswordPolicy\PolicyBuilder;
 

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    \PasswordPolicy::define('default', function (PolicyBuilder $builder) {
        $builder->minLength(8)
            ->upperCase(3);
            // ...
    });
}

您可以根据需要定义任意数量的策略,但是建议尽可能使用'default'。

设置验证

定义好策略后,您就可以开始使用策略了。现在,一个新的'password'验证规则可供使用。

// Request class

/**
 * Declare validation rules
 * 
 * @return array
 */
public function rules()
{
    return [
        // ...
        'password' => 'required|password'
    ];
}

默认情况下,验证器将使用'default'策略。要使用替代策略,请添加一个额外的参数

'password' => 'required|password:admin'