繁体   English   中英

Spring 基于安全用户的权限? (不基于角色)

[英]Spring security user based permission? (not role based)

假设我有一个由用户和项目组成的数据库。 用户与项目具有一对多的关系。 用户可以使用 rest 端点进行操作。

问题是:如何验证用户是否拥有资源?

我不希望恶意用户更改 id 然后突然查看另一个人的项目详细信息/图像/等。 把它想象成社交媒体(我的应用程序不是社交媒体,但试图说明问题):尽管具有相同的“状态”,但您只能查看自己的图像而不能查看其他人的图像。

大多数 spring-security 在线博客都使用基于角色的方法。 在这种情况下,我什至不知道要搜索什么(尝试了多个搜索查询无济于事)。

一种选择是对每个资源请求/操作运行某种多连接查询,直到我到达该资源 ID 并检查它的拥有用户以检查它是否是登录用户。 但是,我不确定这种方式是否有效,因为在真实应用程序中的链中有多个表(如果我手动 go 这种方式可能会有很多连接;示例:用户 -> 项目 -> 任务列表 -> .. . -> 注意;删除注释会触发大链)或如何让“授权者”使用它。

我有什么选择?

以防万一:我正在使用 spring-boot + hibernate/JPA + spring-security

Spring Security有以下几个概念:

验证:

证明演员是它所保证的人。 身份验证是使用credentials完成的,其中 credentials 可以采用任意数量的 forms - 用户名/密码、令牌、硬件密钥等。

您可以使用一组可接受的身份验证提供程序设置 Spring 安全性。

授权:

给定一个经过身份验证的用户,决定该用户是否可以访问给定的资源。 资源可以在哪里:

  • 一个 HTTP 端点。
  • Java 方法。
  • object的一个属性。

您在这里要做的是提供自定义授权方案。

您可以在这里阅读 Spring Security 的授权架构,包括如何设置自定义授权。 准备就绪后,您可以在 go 中提出具体问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM