使用数据库中的密码列检查旧密码

Checking old password with password column in database

我需要检查用户输入的密码并检查它。如果正确我会用新密码更新密码,如果密码错误我想在 laravel 5.4.

中给用户一个警告

控制器:

public function edit(Request $request){

    $user = new User;
    $user = $user->find(1);

            $oldpassword = $request->input('oldpassword');
            $newpassword = $request->input('newpassword');

        //if condition 
        /*if (user()->id == $oldpassword){
            $updatesucess = 1;
        }else {
            $updatesucess = 0;
        }*/


            $user->update(['password' => $newpassword]);
            return back();
        }

查看:

@section('content')
<div class="form">
    <div class="logo-area">
        <img src="images/logo.png">
    </div>
    <form method="POST" action="/edit">
     {{ csrf_field() }}
        <input type="password" name="oldpassword" placeholder="old Password" required>
        <input type="password" name="newpassword" placeholder="new Password" required>
        <input type="submit" value="Save changes">
    </form>

使用Hash门面的check方法(documentation)

  1. 在你的控制器中file 添加 Hash facade:

    use Illuminate\Support\Facades\Hash;
    
  2. 添加密码检查并在不匹配的情况下处理重定向错误

    $user = User::find(1);
    
    $oldpassword = $request->input('oldpassword');
    
    if (Hash::check($oldpassword, $user->password)) {
      // redirect back with error
    }
    
  3. 使用Hash::make

    更新用户密码
     $newpassword = $request->input('newpassword'); 
     $user->update(['password' => Hash::make($newpassword)]);