【问题标题】:How to change password in laravel laravel 5.2如何在 laravel laravel 5.2 中更改密码
【发布时间】:2019-03-10 01:07:36
【问题描述】:

我有三个字段

1- 密码 2-新密码 3- password_confirmation 这是更改密码功能。

我已经允许密码的条件必须是8个字符,一个大写一个小写一个特殊字符

但我无法更改我的密码,我的验证器失败了:

我的控制器代码:

               public function changepassword(Request $request){
    $user = Auth::guard()->user();
    $request_data = $request->All();
    $validator = $this->admin_credential_rules($request_data);
    if($validator->fails()) {
         return \Illuminate\Support\Facades\Redirect::to('mujucet')
            ->with("modal_message_danger", "password must be at least 8 characters, one upper and lower case, and a number");
        } else {

        $current_password = $user->password;
        if(md5($request_data['password']) == $current_password) {
            $user_id = $user->id;
            $obj_user = User::find($user_id);
            $obj_user->password = md5($request_data['new_password']);
            $obj_user->save();

             return \Illuminate\Support\Facades\Redirect::to('mujucet')
                ->with("modal_message_success", "Password has been changed successfully");
        } else {
            return \Illuminate\Support\Facades\Redirect::to('mujucet')
                ->with("modal_message_danger", "wong old password");           
     }
    }
}

               public function admin_credential_rules(array $data){
    $messages = [
        'new_password.required' => "Zdejte nové heslo.",
        'password.required' => "Zadejte souÄasné heslo.",
    ];

    $validator = Validator::make($data, [
        'password' => 'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/|confirmed',
        'new_password' => 'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/|confirmed',
    ], $messages);

    return $validator;
}

我陷入了这个问题,我需要你的帮助。 任何帮助将不胜感激!

【问题讨论】:

标签: php laravel change-password


【解决方案1】:

验证器给你什么错误?您可以使用$validator->errors() 检索它们。

查看代码,我认为您需要从密码字段验证器中删除 confirmed 规则(因为您不需要确认旧密码)。然后您需要将新的密码确认字段更改为名称new_password_confirmation

您的三个字段应该是:passwordnew_passwordnew_password_confirmation

验证器应该是:

$validator = Validator::make($data, [
        'password' => 'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/',
        'new_password' => 'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/|confirmed',
    ], $messages);

您是否覆盖了默认哈希以使用 MD5 作为密码?默认情况下,Laravel 使用 bcrypt,这对于散列敏感数据来说更加安全。

【讨论】:

    猜你喜欢
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2017-03-26
    • 2017-12-07
    相关资源
    最近更新 更多