ITPub博客

首页 > 应用开发 > > 修改用户信息时,故意将隐藏的id改成其他人的,然后提交,这样的问题怎么解决?

修改用户信息时,故意将隐藏的id改成其他人的,然后提交,这样的问题怎么解决?

作者:lilyone 时间:2019-08-14 16:02:13 0 删除 编辑
比如:用户小明信息如下:{id:1, userName: ‘小明’, phone:'110'},小强的信息{id:2, userName:'小强', phone:'120'}

controller 方法如下

@Controller
public class UserController {
    @Autowried
    private UserService userService;
    @RequestMapping("/update")
    public String update(User u) {
        userService.update(u);
       ...
    }
}
sql语句如下

update user set 
   userName=#{userName}, 
   phone=#{phone}
where id=#{id}
修改页面如下:

<form>
<input type=“hidden” name="id" value=1 />
<input type="text" name="userName" />
<input type="text" name="phone" />
<button type="submit" value="保存" />
</form>
在提交修改信息之前,故意修改隐藏的id,那么这样不就改了其他人的信息了吗?

----
我自己想了一个办法:
每条记录加一个字段 create_by 创建人
在controller的update方法的中,获取当前用户id,并赋给user对象的createBy属性

... 
user.setCreateBy(currentUser.getId());
...
sql改为

...
update user 
  set userName=#{userName},
  phone=#{phone}
where id=#{id} 
<if test="createBy != null and createBy != 0>
  and create_by=#{createBy}
</if>
...
----
但是感觉这种方法不是很完美。
请教大神,有没有更好的解决方案呢?


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4635/viewspace-3142811/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-01

  • 博文量
    159
  • 访问量
    977