arxeiss/passwordrule

此包已被废弃,不再维护。没有建议的替代包。

Laravel 框架的密码规则

v1.0.4 2022-02-21 11:58 UTC

This package is auto-updated.

Last update: 2022-08-21 13:00:23 UTC


README

弃用:由于在 Laravel 8.39 版本中已将密码验证添加到核心,因此该工具已被弃用。有关更多信息,请参阅 Laravel NewsLaravel 文档

Laravel 5.5+ 的密码规则

此包包含用于使用 Laravel 验证器验证密码字段的 PasswordRule 类。如今,包含数字、大小写字母(以及符号)的密码已不再足够。但仍然比简单的最小长度规则要好。

使用 Illuminate\Contracts\Validation\Rule 接口创建的自定义规则是在 Laravel 5.5 中引入的。但您也可以简单地复制逻辑并在早期的 Laravel 版本中使用。

重要提示 - 不要错过 添加到预定义的 Laravel Auth 控制器 部分,因为必须在原始控制器中更改规则。

目录

安装

建议使用 composer 进行安装

composer require arxeiss/passwordrule

不需要更多步骤,因为 Laravel 5.5+ 提供了 自动包发现

配置

默认情况下,包包含 英语捷克语 翻译,默认配置如下。不要更改 vendor 文件夹中的配置文件或翻译。运行以下命令

php artisan vendor:publish --provider="PasswordRule\PasswordRuleServiceProvider"

以发布配置文件 config/passwordrule.php 和翻译文件到 resources/lang/vendor/passwordrule/

PasswordRule 可以做什么

PasswordRule 可以用于 Laravel,使用四个可选规则验证密码输入。

  • 最小长度 - 必要规则,用于测试密码的最小长度
  • 驼峰式 - 可选规则。测试密码是否包含大小写字母
  • 数字 - 可选规则,用于测试密码是否包含数字
  • 特殊字符 - 可选规则,用于测试密码是否包含列表中的至少一个特殊字符

所有设置都可以通过全局配置文件以及每个实例的构造函数设置。

消息格式

PasswordRule 总是返回一条消息,该消息根据设置构建。始终使用基本短语。根据上述设置添加更多或更少的短语。在语言文件中指定两个连接短语。使用 join_comma 连接所有短语(最后一个短语除外)。在最后一个短语之前插入 join_and

结果消息可能如下所示

  • 密码必须至少包含 6 个字符
  • 密码必须至少包含 8 个字符 数字
  • 密码必须至少包含 6 个字符, 大小写字母 数字
  • 密码必须包含至少7个字符,包括大小写字母、数字以及至少1个特殊符号(@#%)。

使用方法

基本使用

表单请求验证:

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'password' => ['required', new PasswordRule\PasswordRule, 'confirmed'],
    ];
}

请求验证:

public function store(Request $request)
{
    $request->validate([
        'password' => ['required', new PasswordRule\PasswordRule, 'confirmed'],
    ]);
}

覆盖全局设置

PasswordRule构造函数接受4个参数,可以覆盖全局设置new PasswordRule($minLength, $camelCase, $numbers, $specialChars)。传递null以从全局配置中加载特定设置。

return [
    // Password must be at least 8 characters long and must contains "_"
    'password' => ['required', new PasswordRule\PasswordRule(8, false, false, "_"), 'confirmed'],
];

添加到预定义的Laravel Auth控制器

Laravel在其入门包laravel/laravel中提供了基本的Auth控制器。现在重要的是RegisterControllerResetPasswordController,因为在这两个控制器中都有原始的密码规则。

在RegisterController中规则直接写入,易于更改。但在ResetPasswordController中,必须覆盖方法rules(),如下面的代码所示。

/**
 * Get the password reset validation rules.
 *
 * @return array
 */
protected function rules()
{
    $rules = parent::rules();
    $rules['password'] = ["required", new PasswordRule, "confirmed"];
    return $rules;
}

变更日志

[1.0] - 14.8.2018

  • 首次公开发布