我正在使用laravel 5开发一个应用程序,允许每个用户更新他的个人资料.
为了更新密码,用户需要先输入旧密码,如果旧密码匹配,则新输入的密码将被散列并存储在DB中.
如何使用laravel表单请求验证来验证这一点?
为了更新密码,用户需要先输入旧密码,如果旧密码匹配,则新输入的密码将被散列并存储在DB中.
如何使用laravel表单请求验证来验证这一点?
我创建了一个自定义验证器,并将其添加到AppServiceProvider,如下所示:
<?PHP namespace App\Providers; use Validator; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Hash ; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { Validator::extend('password_hash_check',function($attribute,$value,$parameters,$validator) { return Hash::check($value,$parameters[0]) ; }); }
然后我在我的表单请求验证器中使用它,如下所示:
<?PHP namespace App\Http\Requests; use App\Http\Requests\Request; class UpdateUserProfileRequest extends Request { /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { $hashed_password = $this->user()->password ; return [ 'oldPassword'=> "password_hash_check:$hashed_password|string|min:6",'newPassword' => 'required_with:oldPassword|confirmed|min:6',]; }