Laravel 密码验证规则

新手上路,请多包涵

如何在验证器中添加密码验证规则?

验证规则:

密码包含来自以下五个类别中的至少三个的字符:

  • 英文大写字符 (A – Z)
  • 英文小写字符 (a – z)
  • 以 10 位为基数 (0 – 9)
  • 非字母数字(例如:!、$、# 或 %)
  • Unicode 字符

如何在验证器规则中添加上述规则?

我的代码在这里

// create the validation rules ------------------------
    $rules = array(
        'name'             => 'required',                        // just a normal required validation
        'email'            => 'required|email|unique:ducks',     // required and must be unique in the ducks table
        'password'         => 'required',
        'password_confirm' => 'required|same:password'           // required and has to match the password field
    );

    // do the validation ----------------------------------
    // validate against the inputs from our form
    $validator = Validator::make(Input::all(), $rules);

    // check if the validator failed -----------------------
    if ($validator->fails()) {

        // get the error messages from the validator
        $messages = $validator->messages();

        // redirect our user back to the form with the errors from the validator
        return Redirect::to('home')
            ->withErrors($validator);

    }

原文由 Bharanikumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

我在 Laravel 中遇到过类似的情况,并通过以下方式解决了它。

密码包含来自以下五个类别中的至少三个的字符:

  • 英文大写字符 (A – Z)
  • 英文小写字符 (a – z)
  • 以 10 位为基数 (0 – 9)
  • 非字母数字(例如:!、$、# 或 %)
  • Unicode 字符

首先,我们需要创建一个正则表达式并对其进行验证。

您的正则表达式将如下所示:

 ^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\x])(?=.*[!$#%]).*$

我已经在 这个 网站上测试并验证了它。然而,以你自己的方式执行你自己的,并相应地进行调整。这只是正则表达式的一个示例,您可以按照自己的方式进行操作。

所以你最终的 Laravel 正则表达式规则 应该是这样的:

 'password' => [
    'required',
    'min:6',
    'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\x])(?=.*[!$#%]).*$/',
    'confirmed'
]

笔记:

  1. 我已经在正则表达式站点和 Laravel 5 测试环境中对其进行了测试和验证,并且可以正常工作。
  2. 我使用了 min:6,这是可选的,但拥有反映不同方面的安全策略始终是一个好习惯,其中之一是最小密码长度。
  3. 我建议您使用密码确认来确保用户输入正确的密码。
  4. 在这 6 个字符中,我们的正则表达式应至少包含 3 个 az 或 AZ 以及数字和特殊字符。
  5. 在投入生产之前,始终在测试环境中测试您的代码。
  6. 我在这个答案中所做的只是正则表达式密码的例子

关于 Laravel 中正则表达式规则的自定义验证消息,这里有几个链接可供查看:

原文由 Maytham Fahmi 发布,翻译遵循 CC BY-SA 4.0 许可协议

Laravel 版本 8 开始,您可以使用内置的密码验证:

 // Require at least 8 characters...
Password::min(8)

// Require at least one letter...
Password::min(8)->letters()

// Require at least one uppercase and one lowercase letter...
Password::min(8)->mixedCase()

// Require at least one number...
Password::min(8)->numbers()

// Require at least one symbol...
Password::min(8)->symbols()

或者你可以把它们全部链接起来


use Illuminate\Validation\Rules\Password;

$rules = [
    'password' => [
        'required',
        'string',
        Password::min(8)
            ->mixedCase()
            ->numbers()
            ->symbols()
            ->uncompromised(),
        'confirmed'
    ],
]

原文由 Moode Osman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题