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

来源:6-7 更新用户个人信息功能开发

ZHU_WD

2018-06-14

http://img.mukewang.com/szimg/5b2221bf00014c9109190385.jpg

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

写回答

1回答

ooyeah3491761

2018-06-14

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

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

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

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

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

7
2
Geely
同学回答的很赞,还有一个原因是因为我们使用的update的mybatis语句,里面是根据是否为null进行更新的。因为其他字段没更新,所以不需要拼接在sql里,来减少sql压力。只更新需要更新的字段。
2018-06-17
共2条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程