【发布时间】:2020-12-18 03:50:45
【问题描述】:
假设我有一个由用户和项目组成的数据库。用户与项目具有一对多的关系。用户可以使用 REST 端点进行操作。
问题是: 如何验证 this 用户拥有 this 资源?
我不希望恶意用户更改 ID,然后突然查看另一个人的项目详细信息/图像/等。把它想象成社交媒体(我的应用不是社交媒体,而是试图说明问题):尽管具有相同的“状态”,但您只能查看自己的图像,而不能查看其他人的图像。
大多数 spring-security 在线博客都使用基于角色的方法。在这种情况下,我什至不知道要搜索什么(尝试了多个搜索查询均无济于事)。
一个选项是对每个资源请求/操作运行某种多连接查询,直到我达到该资源 ID 并检查它的拥有用户以检查它是否是登录用户。但是,我不确定这种方式是否有效,因为实际应用程序中的链中有多个表(如果我手动使用这种方式,可能会有很多连接;例如:用户-> 项目-> 任务列表-> .. . -> 注意;删除笔记会触发大链)或如何让“授权人”使用它。
我有什么选择?
如果它很重要: 我正在使用 spring-boot + hibernate/JPA + spring-security
【问题讨论】:
标签: spring spring-boot hibernate spring-security