将用户密码验证的 required 规则换成 nullable,这意味着当用户提供空白密码时也会通过验证,问题是密码都留空白,点击更新后,是更新成功了,密码是多少呢?

将用户密码验证的 required 规则换成 nullable,这意味着当用户提供空白密码时也会通过验证,问题是密码都留空白,点击更新后,是更新成功了,那么当前更新后的用户密码是什么????

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

@AllenBool 可以一点点排查. 我的话, 习惯由后向前排查, 大概步骤如下:

  1. 确定不是自己手滑输错了邮箱或密码造成的, 也就是数据库中的 password 字段确实在提交更新的过程中发生了更改.
  2. 确定向数据库提交的请求中是否带有 password 字段信息;
  3. 带有了 password 字段的话, 排查 UsersController 中, update 方法为什么会在执行过程中, 带上了本不该带有的字段.
  4. 还是找不到问题的话, 再继续往上, 排查是否是视图传递给 update 方法的变量本身发生了问题, 也就是 $request->password 意外地不为空, 那么排查视图中的 form 部分.

反正大体思路是这样的, 如果确定了以上部分都没有问题, 那么后续的debug也可以是这样的思路.

即:

  • 密码被改了?
  • 改成啥了?
  • 从哪一步开始被改的?
5年前 评论
讨论数量: 4

通过if语句,密码留空时没有提交password字段,密码就不会被更新了,依旧是原来的密码。

5年前 评论

@AllenBool 可以一点点排查. 我的话, 习惯由后向前排查, 大概步骤如下:

  1. 确定不是自己手滑输错了邮箱或密码造成的, 也就是数据库中的 password 字段确实在提交更新的过程中发生了更改.
  2. 确定向数据库提交的请求中是否带有 password 字段信息;
  3. 带有了 password 字段的话, 排查 UsersController 中, update 方法为什么会在执行过程中, 带上了本不该带有的字段.
  4. 还是找不到问题的话, 再继续往上, 排查是否是视图传递给 update 方法的变量本身发生了问题, 也就是 $request->password 意外地不为空, 那么排查视图中的 form 部分.

反正大体思路是这样的, 如果确定了以上部分都没有问题, 那么后续的debug也可以是这样的思路.

即:

  • 密码被改了?
  • 改成啥了?
  • 从哪一步开始被改的?
5年前 评论

@SnowZh 谢谢你的分析和指导。 :+1:

5年前 评论

根据文档中的if判断

   if ($request->password) {
       $data['password'] = bcrypt($request->password);
   }

密码为空时不会更新密码。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!