php – Laravel 5.1 bcrypt并登录
发布时间:2020-12-14 19:36:54 所属栏目:大数据 来源:网络整理
导读:当我在Laravel框架中注册一个新用户时,我现在正在这样做, // Creating a new user$user = new User;$user-firstname = $data['firstname'];$user-lastname = $data['lastname'];$user-email = $data['email'];$user-password = bcrypt($data['password']);$u
当我在Laravel框架中注册一个新用户时,我现在正在这样做,
// Creating a new user $user = new User; $user->firstname = $data['firstname']; $user->lastname = $data['lastname']; $user->email = $data['email']; $user->password = bcrypt($data['password']); $user->save(); 这很好用,我可以登录到该应用程序.但是,我希望用户可以选择在其设置页面中更改其密码.这样做,我使用相同的技术,使用 $newPass = bcrypt($response->new_password); 并更新用户字段.但是,这样做之后,我无法登录?我在laravel中使用内置身份验证服务进行注册/登录. 我在这做错了什么?我应该采取另一种方式吗? 我还试图加密我当前的密码,并且我获得了与存储在数据库中的哈希完全不同的哈希. 这太混乱.. 更新了控制器代码, // Validation $this->validate($request,[ 'email' => 'email','password' => 'min:8|confirmed','current_password' => 'required',]); // Getting the user ID $userId = Auth::id(); // Dummy hack check,change later. if(!Auth::attempt(['id' => $userId,'password' => $request->current_password])) { return redirect('settings')->with('alert','current password is wrong.'); } // Everything is validated and ok to proceed if($request->email) { $data['email'] = $request->email; } if($request->password) { $data['password'] = bcrypt("helloworld"); } $user = User::where('id',$userId)->update($data); dd($data); 转储输入的数据, +request: ParameterBag {#40 ▼ #parameters: array:5 [▼ "_token" => "JQIIuCjiKQmbK0X5zCM6czYD1vIoh4PGjLO4qrFm" "email" => "testing@gmail.com" "password" => "thisisnewpass" "password_confirmation" => "thisisnewpass" "current_password" => "helloworld" ] } 解决方法
此代码更接近Laravel如何处理内部重置用户密码的方式.试试看.
// Getting the User $user = Auth::user(); // Gets the currently logged in User $credentials = [ 'id' => $user->id,'password' => $request->input('current_password') ]; // Make sure current password is correct if (!Auth::validate($credentials)) { // Checks the User's credentials return redirect('settings')->with('alert','current password is wrong.'); } // Change the password if ($request->has('password')) { $user->password = bcrypt($request->input('password')); } // Save any changes $user->save(); 看起来您使用相同的表单来更新用户的电子邮件地址,因此请更新代码以满足您的需求. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |