Laravel 的 验证旧密码的验证代码

一个很有用的验证方法,奇怪的是竟然没有在官方的验证规则方法中。可能是中外习惯不同吧。

更新密码这是一个非常常用的功能,我们需要为用户提供一个更改密码的方式。安全一些的方式是通过验证旧密码,再更新密码,以免由于“记住我”功能导致的密码被盗改。

一般来说,Laravel 的更改密码都是通过 RestPassword Email 来实现的,但是我更倾向用户可以在后台更改。所以,便在这里贴下相关的代码,借助下方的代码,可以实现验证用户密码,旧密码验证通过后,再进行新的密码的更新。

 App\Providers\AppServiceProvider 中的 Boot 方法中添加如下代码。

Validator::extend('password_hash_check', function($attribute, $value, $parameters, $validator) {
            return Hash::check($value , $parameters[0]) ;
        });

在对应的表单请求中,添加如下的调用。

use Auth;



/**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {

        $password = Auth::user()->password;

        return [
            'old_password' => "required|password_hash_check:" . $password,
            "password" => "required|min:6|max:25|confirmed",
        ];
    }

(上述代码采用的是表单请求的方式来进行验证的,使用方法参看:Validation