【问题标题】:How Can I Add a Custom Password Validation in Laravels default Forgot Password System?如何在 Laravel 默认的忘记密码系统中添加自定义密码验证?
【发布时间】:2018-06-18 04:40:50
【问题描述】:

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

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

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

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

我正在使用 Laravel 5.3。

【问题讨论】:

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


    【解决方案1】:

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

    我想与您分享我们的基本解决方案,但我们已经并将它用于我们构建的许多项目。

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

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

      公共函数 validatePasswordFormat($attribute,$value,$parameters){ return preg_match(("/^(?=.)[A-Za-z\d][A-Za-z\d!@#$%^&()_+]{2 ,25}$/"),$value);}

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

    2. 将您的自定义验证器引导至应用服务提供商。

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

      }); }

    3. 在您的请求中这样做可以轻松使用。

      'password' => "required|password_format"

      然后在您的消息响应中查找错误。

      'password_format' => "密码格式无效。等等等等"

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

    【讨论】:

      【解决方案2】:

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

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

      希望对你有帮助

      【讨论】:

      • @Rick 很高兴它对您有所帮助。
      • @Amarnasan 点击它会变成绿色的勾号。 :p
      • @AdnanMumtaz 我不是 OP
      • @Amarnasan 哦,好吧。
      猜你喜欢
      • 2020-10-19
      • 1970-01-01
      • 2012-05-03
      • 2018-03-13
      • 2020-04-08
      • 2015-01-22
      • 2017-12-09
      • 2018-12-07
      • 1970-01-01
      相关资源
      最近更新 更多