请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于更新用户信息时的疑问

https://img1.sycdn.imooc.com//szimg/5b2221bf00014c9109190385.jpg

这是service层的一段代码,请问在这段代码中,为什么要 new 一个 User 呢,直接对传递过来的 User 进行操作然后保存不行吗?不是很理解

正在回答

1回答

因为传递过来的user可能带有恶意参数,例如user.role = 0,这样这个用户就会变成一个管理员,导致纵向越权。

当然,你也可以将传递过来的user通过setRole(1)保证他是普通用户。

这只是一种情况,实际中可能还有其它不应该被修改的字段。

总结来说,直接用传递过来的user进行操作保存时可以的,但是要非常小心,确保不会修改我们不想修改的信息。

而new 一个user虽然相对麻烦一点,但是能确保要修改的信息我们是清楚的。

7 回复 有任何疑惑可以回复我~
  • 提问者 ZHU_WD #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-06-14 16:25:23
  • Geely #2
    同学回答的很赞,还有一个原因是因为我们使用的update的mybatis语句,里面是根据是否为null进行更新的。因为其他字段没更新,所以不需要拼接在sql里,来减少sql压力。只更新需要更新的字段。
    回复 有任何疑惑可以回复我~ 2018-06-17 23:54:26
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信