【问题标题】:Laravel use Hash as ValidatorLaravel 使用 Hash 作为验证器
【发布时间】:2014-02-15 19:40:30
【问题描述】:

我正在使用Hash::check() 来检查当前密码和输入的密码。我用这个 if 检查这个动作

$HashPassowrd = Hash::make(Input::get('password'));

if( ! Hash::check( Input::get('currPassword') , $data->password ) )
{
   return Redirect::to('profile.update')
            ->withErrors('Current Password in Incorrect!');
}

如何将其用作 validator ?例如在这个rules

$rules = array(
            'name'        => 'required|alpha',
            'family'      => 'required',
            'email'       => 'required|email',
            'currPassword'=> 'required',
            'password'    => 'required|confirmed',
            'password_confirmation'=>'required',
        );

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    您可以在验证器中添加自定义规则:

    Validator::extend('checkHashedPass', function($attribute, $value, $parameters)
    {
        if( ! Hash::check( $value , $parameters[0] ) )
        {
            return false;
        }
        return true;
    });
    

    现在您可以将此自定义规则用作:

    'currPassword' => 'required|checkHashedPass:' . Input::get('currPassword')
    

    因此,如果此规则的验证失败,那么您将在视图中收到此错误消息,并且可以使用 $errors->first('currPassword'); 进行访问,但您需要为您创建的此自定义规则传递自定义错误消息:

    $messages = array( 'currPassword.checkHashedPass' => 'Current Password failed!' );
    

    因此,在验证期间,您必须使用以下方法传递 $messages 数组:

    $validator = Validator::make(Input::all(), $rules, $messages);
    

    查看文档中的custom validation rules

    【讨论】:

    • 如果用户的密码包含竖线或冒号怎么办?
    【解决方案2】:

    你也可以使用闭包验证规则:

    [ 'currPassword' => 函数 ($attribute, $value, $fail) { if (!Hash::check($value, $this->user()->password)) { $fail('您当前的密码不匹配'); } }, '密码' => '必填|min:6|已确认', ];

    【讨论】:

      【解决方案3】:

      从 Laravel 6.x 开始,添加了一个密码验证规则,它将为您完成上述操作。

      查看its documentation

      只需将此规则添加到您的验证规则中:

      '密码' => '密码:api'

      其中 api 是 身份验证保护

      【讨论】:

        猜你喜欢
        • 2014-04-26
        • 1970-01-01
        • 1970-01-01
        • 2016-02-22
        • 1970-01-01
        • 2015-06-08
        • 2018-11-26
        • 2014-12-26
        • 2021-06-28
        相关资源
        最近更新 更多