如何解决Spring Security基于用户的权限? 不基于角色
假设我有一个由用户和项目组成的数据库。用户与项目具有一对多关系。用户可以使用其余端点进行操作。
问题是: 如何验证 this 用户拥有 this 资源?
我不希望恶意用户更改ID,然后突然他查看另一个人的项目详细信息/图像/等。可以将其视为社交媒体(我的应用程序不是社交媒体,而是试图说明问题):尽管具有相同的“状态”,但您只能查看自己的图像,而不能查看其他人的图像。
大多数在线春季安全博客都使用基于角色的方法。在这种情况下,我什至不知道要搜索什么(尝试多次搜索查询均无济于事)。
一个选择是对每个资源请求/操作运行某种类型的多联接查询,直到我到达该资源ID并检查其拥有的用户以检查它是否为登录用户。但是,我不确定这种方法是否有效,因为实际应用程序中的链中有多个表(如果我手动进行这种操作,可能会有很多联接;例如:user-> project-> tasklist-> .. 。->注释;删除注释会触发较大的链条)或如何使“授权者”使用它。
我有什么选择?
重要的是: 我正在使用spring-boot + hibernate / JPA + spring-security
解决方法
Spring Security具有以下概念:
身份验证:
证明演员是谁的角色。验证使用凭据完成,其中凭据可以采用多种形式-用户名/密码,令牌,硬件密钥等。
您可以使用一组可接受的身份验证提供程序来设置Spring Security。
授权:
给出一个已认证的用户,确定该用户是否有权访问给定资源。资源可以在哪里:
- HTTP端点。
- Java方法。
- 对象的属性。
您要在此处执行的是自定义授权方案。
您可以阅读有关Spring Security的授权体系结构here的信息,包括如何设置自定义授权。准备就绪后,您可能会问一些具体问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。