spring mvc @ModelAttribute 如何不覆盖session

Jazzhow 2016-01-22 11:52:57
如在登录时设置@SessionAttributes("user")对象,在其它Controller的方法里要通过@ModelAttribute("user") User user取该对象,发现前台传来的参数可以覆盖user中的userid,导致session中的userid改变,这样我的系统就变得非常不安全,怎样才能让@ModelAttribute的参数对象不被前台传来的参数赋值呢,不想用servlet httpsession的方式,有别的办法吗
...全文
164 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Intboy 2016-01-22
  • 打赏
  • 举报
回复
是覆盖了session中的user吧?
Jazzhow 2016-01-22
  • 打赏
  • 举报
回复
引用 4 楼 fengspg 的回复:
怎么可能,不同用户进来session都不一样,怎么会存在覆盖的情况?
@SessionAttributes("user") public class ModifyPasswordController { @RequestMapping("modifyPasswd") @ResponseBody public JsonResult modifyPasswd(String oldPwd,String pwd,@ModelAttribute("user") UserEntity user) 我本来是要通过@ModelAttribute("user") UserEntity user来得到该用户存在session中的user对象的,但如果传来的参数只有 oldPwd,pwd这两个那session 中user对象没有问题,但是如果用户传来一个userID=1那么spring mvc 就会自动调用user.setUserID方法,把原本session中的user对象中的userID属性修改掉
Jazzhow 2016-01-22
  • 打赏
  • 举报
回复
引用 4 楼 fengspg 的回复:
怎么可能,不同用户进来session都不一样,怎么会存在覆盖的情况?
@SessionAttributes("user") public class ModifyPasswordController { @RequestMapping("modifyPasswd") @ResponseBody public JsonResult modifyPasswd(String oldPwd,String pwd,@ModelAttribute("user") UserEntity user) 我本来是要通过@ModelAttribute("user") UserEntity user来得到该用户存在session中的user对象的,但如果传来的参数只有 oldPwd,pwd这两个那session 中user对象没有问题,但是如果用户传来一个userID=1那么spring mvc 就会自动调用user.setUserID方法,把原本session中的user对象中的userID属性修改掉,可是我并不是想让他被修改,我这么写只是行为了拿到当前用户的一个session对象user而已,但不是让他被修改
Intboy 2016-01-22
  • 打赏
  • 举报
回复
怎么可能,不同用户进来session都不一样,怎么会存在覆盖的情况?
Jazzhow 2016-01-22
  • 打赏
  • 举报
回复
引用 1 楼 fengspg 的回复:
是覆盖了session中的user吧?
比如userID为5的用户浏览器传了个参数?userID=1,那么当这个controller执行完后session中的user对象中的属性userID就变成了1,这样的覆盖
Jazzhow 2016-01-22
  • 打赏
  • 举报
回复
引用 1 楼 fengspg 的回复:
是覆盖了session中的user吧?
覆盖了session中user对象的一个userID属性

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧