laravel - 如何在 laravel 5.6 中验证当前密码

标签 laravel validation required change-password laravel-5.6

我这样尝试:

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ChangePasswordRequest extends FormRequest
{
    ...
    public function rules()
    {
        return [
            'old_password'              => 'required|confirmed',
            'password'                  => 'required|min:6',
            'password_confirmation'     => 'required|min:6|same:password'
        ];
    }
}

我已经正确输入了旧密码,但仍然有一条消息:

The old password confirmation does not match.

我该如何解决这个问题?

最佳答案

你能做的就是制定规则。以下可能会解决您的问题。

当前密码.php

<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Hash;
class CurrentPassword implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return Hash::check($value,auth()->user()->password);
    }
    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'Current password is incorrect';
    }
}

在你的 Controller 中,你可以做这样的事情:

    $this->validate($request,[
        'password_current'=>['required',new CurrentPassword()],
        'password'=>'required|string|min:6|confirmed',
    ]);
    $request->user()->update([
        'password'=>bcrypt($request->password)
    ]);

关于laravel - 如何在 laravel 5.6 中验证当前密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49332209/

相关文章:

php - 如何使用 Illuminate/Html 在 Laravel 中设置禁用选择选项

php - Laravel 验证 : Validating OR instead of AND

Oracle Apex 5.1 - 如何根据特定条件在文本字段上动态显示/隐藏 '*' 必需符号

java - 用户名验证Java

jquery - 不支持的浏览器上的 html5 必需属性

需要 paypal 快速结帐送货地址吗?

laravel - Docker Laravel Vuejs Nginx,加载资源时出现问题

php - Laravel - 使用 Eloquent 在数据透视表上进行多对多

Laravel 4 restful 使用资源 Controller 删除记录

javascript - 验证我的代码 json