如何在Laravels默认忘记密码系统中添加自定义密码验证?

时间:2018-01-09 07:27:52

标签: php laravel validation laravel-5.3 laravel-validation

我想在使用Laravels默认忘记密码系统时更改密码验证。我需要这样做,所以我可以用这个验证规则替换密码验证规则:

'password' => 'required|min:6|max:15|confirmed',

具体来说,我需要添加最小/最大更改。

但是,我没有在ForgotPasswordController或ResetPasswordController中看到任何可以执行此操作的地方....

我正在使用Laravel 5.3。

2 个答案:

答案 0 :(得分:2)

您可以在ResetPasswordController中执行此操作,只需覆盖规则方法。

  protected function rules()
{
    return [
        'token' => 'required',
        'email' => 'required|email',
        'password' => 'required|confirmed|min:6',
    ];
}

希望这有帮助

答案 1 :(得分:0)

因为您正在处理密码数据。您不会考虑密码的长度,但密码的有效格式也不能包含任何奇怪的特殊字符,甚至空格/空白字符。

我想与您分享我们的基本解决方案,这些解决方案在我们构建的许多项目中都有效并且一直在使用它。

创建一个自定义验证器并通过以下说明进行注册。

  1. 为密码格式创建自定义验证程序,为我们的名为" CustomValidator"的自定义验证程序创建了一个customClass。将Illuminate\Validation\Validator类扩展到您的自定义类。

    public function validatePasswordFormat($ attribute,$ value,$ parameters){              return preg_match((" / ^(?=。)[A-Za-z \ d] [A-Za-z \ d!@#$%^& ()_ +] {2,25} $ /&#34),$值);}

    带有特殊字符的字母数字!@#$%^& *()_ + 仅限2-25个字符范围。你可以随时改变它。

  2. 将自定义验证程序引导至应用服务提供商。

    public function boot(){
       Validator::resolver(function($translator,$data,$rules,$messages){
       return new CustomValidator($translator,$data,$rules,$messages);
    

    });     }

  3. 在您的请求中轻松使用。

    <强>&#39;密码&#39; =&GT; &#34;需| password_format&#34;

    然后在您的消息中回复错误。

    <强>&#39; password_format&#39; =&GT; &#34;密码格式无效。 blah blah blah&#34;

  4. 我希望这会对你有所帮助。