基于用户的Spring安全权限?(不基于角色)
假设我有一个由用户和项目组成的数据库。用户与项目之间存在一对多关系。用户可以使用rest端点执行操作 问题是: 如何验证此用户是否拥有此资源 我不希望恶意用户更改id,然后突然查看另一个人的项目详细信息/图像/等。请将其视为社交媒体(我的应用程序不是社交媒体,但试图说明问题):尽管具有相同的“状态”,但您只能查看您的图像,而不能查看另一个人的图像 大多数spring安全博客在线都使用基于角色的方法。我甚至不知道在这种情况下要搜索什么(尝试了多个搜索查询,但没有结果) 一个选项是对每个资源请求/操作运行某种类型的多连接查询,直到我到达该资源id并检查它的所有者用户,以检查它是否是登录的用户。然而,我不确定这种方式是否有效,因为在真实的应用程序中,一个链中有多个表(如果我手动使用这种方式,可能会有很多联接;例如:用户->项目->任务列表->…->注释;删除注释会触发一个大链)或者如何让“授权人”使用它 我有什么选择 如有必要:基于用户的Spring安全权限?(不基于角色),spring,spring-boot,hibernate,spring-security,Spring,Spring Boot,Hibernate,Spring Security,假设我有一个由用户和项目组成的数据库。用户与项目之间存在一对多关系。用户可以使用rest端点执行操作 问题是: 如何验证此用户是否拥有此资源 我不希望恶意用户更改id,然后突然查看另一个人的项目详细信息/图像/等。请将其视为社交媒体(我的应用程序不是社交媒体,但试图说明问题):尽管具有相同的“状态”,但您只能查看您的图像,而不能查看另一个人的图像 大多数spring安全博客在线都使用基于角色的方法。我甚至不知道在这种情况下要搜索什么(尝试了多个搜索查询,但没有结果) 一个选项是对每个资源请求/操
我使用的是spring boot+hibernate/JPA+spring securityspring security具有以下概念: 身份验证: 证明演员就是它所担保的人。身份验证是使用凭据完成的,其中凭据可以采用任意形式-用户名/密码、令牌、硬件密钥等 您可以使用一组可接受的身份验证提供程序设置Spring安全性 授权: 给定一个经过身份验证的用户,决定该用户是否有权访问给定的资源。其中资源可以是:
- HTTP端点
- Java方法
- 物体的属性
您可以阅读SpringSecurity的授权架构,包括如何设置自定义授权。一旦你准备好了,你可以边走边问一些具体的问题。如果我听起来像个新手(我是),请原谅。在阅读了更多关于该主题的内容后,我必须制定自己的自定义授权决定方法。我是否在该方法中执行查询(通过调用服务)?此外,由于存在不同的资源(用户可以操作的图像和一些其他实体),这是否意味着我必须为每个资源定义一个?最后,如果您碰巧有一个关于实现的资源,那将是非常棒的。这将成为更好的spring安全入门。