【发布时间】:2018-04-25 17:26:39
【问题描述】:
我有一个 RESTful 服务,它公开了 /user/{id} 等资源
现在,用户可以提供凭据、获取令牌并访问资源。但是,一旦通过身份验证,用户就可以访问任何id 的资源。
意思是,user1可以访问/user/1和user/2等URI。我最终在控制器方法中使用了Principal,并开始使用用户尝试访问的id 检查Principal 的id。
此外,用户有多个与之关联的资源。比如说,user1 拥有 res1 和 res2,user2 拥有 res3 和 res4。这些可以通过/user/1/res/2 访问。我需要一种方法来阻止/user/1/res/3,因为 res3 归 user1 而非 user2 所有。
但我相信这个问题很常见,我对我的解决方案并不十分相信。
有没有更好的方法来处理这个问题?
谢谢
【问题讨论】:
-
你想要什么?不想让用户访问任何 {id}?
-
不,让用户访问自己的 id 而不是其他人的。 User1 的 id 为 1,应该能够访问 /user/1 而不是 /user/2。
-
您实际上需要分配角色和权限来完成这项任务。我们在项目中使用 JWT 来做到这一点。
-
您能详细说明一下吗?也许写一个答案?我的理解是所有用户都将拥有 USER_ROLE。将如何提供帮助?
-
这是很常见的问题。所以我不会为你创建答案。只需查看帖子以获取帮助javabycode.com/spring-framework-tutorial/spring-security/…
标签: java spring rest spring-security