【问题标题】:Custom validation rules自定义验证规则
【发布时间】:2017-07-25 14:05:39
【问题描述】:

我想为重置密码的表单创建验证。

我有一个方法可以检查新密码是否相同,是否超过6个字符。

我只错过一件事来检查以前的密码是否一致。

    /**
* Reset user password
*
* @return void
*/
public function reset_password(Request $request){

    $this->validate($request, [
        'old_password' => 'required',
        'password' => 'required|min:6|confirmed'
    ]);

    $user = Auth::user();
    $user->password = bcrypt($request->password);
    $user->save();


    return redirect('/user/profile');
}

【问题讨论】:

  • “一致”是什么意思?
  • 我的意思是或者如何检查指定的密码是否与数据库中的密码相同。
  • 你知道,我给了当前密码,我想检查密码是否与数据库中的密码相同。
  • 你使用的是什么版本的 Laravel?
  • 5.4版

标签: php laravel validation rules


【解决方案1】:

试试这个:

\Hash::check($request->password, $user->password);

【讨论】:

    【解决方案2】:

    最好的方法是创建新的验证规则:Custom Validation Rules

    我做了什么(未测试):

    // Somewhere inside your app service provider boot()
    Validation::extend('notSamePassword', function($attribute, $value, $parameters, $validator) {
        return !Hash::check($attribute, $parameters[0]);
    }
    

    然后在您的控制器/您验证的地方:

    $password = 'password hash to validate with';
    $this->validate($request, [
        'old_password' => 'required',
        'password' => 'required|min:6|confirmed|notSamePassword:'.$password
    ]);
    

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2019-02-12
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多