采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这是service层的一段代码,请问在这段代码中,为什么要 new 一个 User 呢,直接对传递过来的 User 进行操作然后保存不行吗?不是很理解
因为传递过来的user可能带有恶意参数,例如user.role = 0,这样这个用户就会变成一个管理员,导致纵向越权。
当然,你也可以将传递过来的user通过setRole(1)保证他是普通用户。
这只是一种情况,实际中可能还有其它不应该被修改的字段。
总结来说,直接用传递过来的user进行操作保存时可以的,但是要非常小心,确保不会修改我们不想修改的信息。
而new 一个user虽然相对麻烦一点,但是能确保要修改的信息我们是清楚的。
非常感谢!
同学回答的很赞,还有一个原因是因为我们使用的update的mybatis语句,里面是根据是否为null进行更新的。因为其他字段没更新,所以不需要拼接在sql里,来减少sql压力。只更新需要更新的字段。
登录后可查看更多问答,登录/注册
前后端分离,数据库接口设计,架构设计,功能开发,上线运维
10.4k 10
1.9k 22
1.5k 21
2.3k 21
2.1k 18