【问题标题】:Laravel Password & Password_Confirmation ValidationLaravel 密码和密码确认验证
【发布时间】:2017-07-26 05:13:17
【问题描述】:

我一直在使用它来编辑用户帐户信息:

$this->validate($request, [
    'password' => 'min:6',
    'password_confirmation' => 'required_with:password|same:password|min:6'
]);

这在 Laravel 5.2 应用程序中运行良好,但在 5.4 应用程序中不起作用。

这里出了什么问题,或者如果设置了 passwordpassword_confirmation 字段,只有在设置 password 时才需要正确的方法是什么?

【问题讨论】:

    标签: laravel validation passwords


    【解决方案1】:

    您可以使用confirmed 验证规则。

    $this->validate($request, [
        'name' => 'required|min:3|max:50',
        'email' => 'email',
        'vat_number' => 'max:13',
        'password' => 'required|confirmed|min:6',
    ]);
    

    【讨论】:

    【解决方案2】:

    尝试这样做,它对我有用:

    $this->validate($request, [
    'name' => 'required|min:3|max:50',
    'email' => 'email',
    'vat_number' => 'max:13',
    'password' => 'min:6|required_with:password_confirmation|same:password_confirmation',
    'password_confirmation' => 'min:6'
    ]);`
    

    似乎该规则总是对对中的第一个输入进行验证...

    【讨论】:

    • 其实same:password规则应该在password_confirmation,而不是密码
    【解决方案3】:

    试试这个:

    'password' => 'required|min:6|confirmed',
    'password_confirmation' => 'required|min:6'
    

    【讨论】:

    • 不需要'password_confirmation' => 'required|min:6'
    • 不需要,因为它会自动验证确认密码,
    【解决方案4】:

    尝试确认且没有密码确认规则:

    $this->validate($request, [
            'name' => 'required|min:3|max:50',
            'email' => 'email',
            'vat_number' => 'max:13',
            'password' => 'confirmed|min:6',
        ]);
    

    【讨论】:

    • confirmed 是否也确保它是相同的值?因为,从文档中我只看到必须存在一个 xyz_confirmation 字段,尽管我可能错了。
    • 希望如此,我也在我的应用中使用了确认
    • 来自 Laravel 5.4 文档:confirmed The field under validation must have a matching field of foo_confirmation. For example, if the field under validation is password, a matching password_confirmation field must be present in the input.,其中匹配意味着该字段存在并且相同
    • 是的,它们必须相同
    【解决方案5】:

    应该够了:

    $this->validate($request, [
        'password' => 'sometimes,min:6,confirmed,required_with:password_confirmed',
    ]);
    

    使密码可选,但如果存在需要匹配的密码确认,也仅在存在密码确认时才需要密码

    【讨论】:

      【解决方案6】:

      我用过这种方式..工作正常!

       $inputs = request()->validate([
              'name' => 'required | min:6 | max: 20',
              'email' => 'required',
              'password' => 'required| min:4| max:7 |confirmed',
              'password_confirmation' => 'required| min:4'
        ]);
      

      【讨论】:

        【解决方案7】:

        我用过这种方式。它工作正常!

        $rules = [
        
                    'password' => [
        
                            'required',
        
                            'string',
        
                            'min:6',
        
                        'max:12',             // must be at least 8 characters in length
        
                        ],
        
                    'confirm_password' => 'required|same:password|min:6'
        
                ];
        

        【讨论】:

          【解决方案8】:

          您可以像这样使用包含至少 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符的密码:

          $this->validate($request, [
          'name' => 'required|min:3|max:50',
          'email' => 'email',
          'password' => 'required|confirmed|min:6|regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{6,}$/']);
          

          【讨论】:

            猜你喜欢
            • 2013-09-18
            • 1970-01-01
            • 2018-11-27
            • 2015-04-03
            • 2023-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-10-18
            相关资源
            最近更新 更多