【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
例如,前端可以发起请求 http:xxx.com/deleteById/id=xxx,已登陆的用户知道这个接口,向这个接口发起请求,删除了不应该由自己操作的数据,怎样避免这种情况?
现在的思路有:1,在 SQL 语句加上条件 WHERE userId = 当前用户的id,操作的数据有个字段为
userId,缺点就是使用 Hibernate的话,更新操作,删除操作 就不能调用session.update(),session.delete(),需要自己写;2,检测操作的数据的 userId 是否等于当前用户的 id,显然前者比较好;
有没有别的更好的办法?
希望知道的站友能支招,先谢了。
建议按第二种方式做。
我们把类似的这些验证都归为业务验证。例如记录是否是当前用户所有、记录是否存在、记录的状态是否变化...。严格一点,每个后台action方法中都需要做这些验证。
没理解你这个是什么意思。。。
既然是开放的接口那就是可以调用的啊,只是可能存在权限的问题!如果你是说http:xxx.com/deleteById/id=xxx,用户只能删除属于自己的数据的话那就是条件上必须要加上用户的限制。