controller里的setUsername在service层一点用处都没
来源:6-7 更新用户个人信息功能开发
慕先生5272158
2021-08-01
在controller中设置了username,这意义何在?在service里完全没用到啊,搞不清这逻辑
写回答
1回答
-
欧阳文轩
2021-08-04
老师写的代码在这里确实是存在问题的,问题是通过该接口修改完用户信息后,session中的用户信息会丢失username,role,createTime和updateTime这几个属性。
controller中老师获取到session中的userId和username,并将其传给service是为了防止用户越权,盗用他人的userId或username进行用户数据篡改。在service中老师针对id和email进行了判重就是此目的,有了该判断逻辑已经足够防止用户越权,无需再对username进行判重判断了,但是在service回传user对象给controller时,回传的user对象内容不完整,只包含了老师set的几个值,前文提到的几个属性并未在其中,所以,该更新接口调用后,session中的用户信息会出现不完整的情况。
此处可能是老师遗漏了,建议在service中,update逻辑完成并确认成功后,重新根据userId查询到完整的user信息,并回传controller。
10
相似问题