当前位置: 首页 > 知识库问答 >
问题:

使用spring boot、jpa和安全性的多用户restful api

璩俊雅
2023-03-14

我想创建一个多用户api,其中用户登录到restful服务,并拥有自己的空间,比如预订类。用户之间不共享预订。

我在努力理解什么是创造这个的最佳模式,同时尽可能多地利用Spring靴的魔力。

我使用Spring Boot JPA,并用@Entity定义一个用户和预订类。

然后,我的预订引用该用户类别。但是,有没有一种方法可以让我使用@RepositoryRestResource或类似的注释来自动隔离每个用户的数据模型,然后使用Spring Security来保护CRUDendpoint,或者我是否需要创建自己的@RestResponse来根据用户的授权查找用户,然后创建findByUser方法来执行隔离?

(注:我是Spring、Spring Boot等的新手)

编辑:有人建议我研究ACL,但我很难找到好的SIMPLE资源来解释它们是如何工作的

共有1个答案

仲孙俊贤
2023-03-14

如果您确实为每个用户提供了独立的数据,并且希望透明机制能够选择或更新只允许您查看的数据,那么您应该寻找eclipselink的多租户支持。

http://wiki.eclipse.org/EclipseLink/Development/Indigo/Multi-Tenancy

这里有一个关于在SpringDataJPA中使用SpringDatajpa和eclipselink进行设置的问题和公认答案

hibernate似乎也支持多租户

但是请记住,对启用多租户的实体的查询总是由租户id过滤的——因此分离非常严格。

 类似资料:
  • 但是该实现假设身份验证也是通过存储在数据库中的密码(@Password注释)完成的。我们希望根据LDAP对用户进行身份验证,然后根据存储在数据库中的内容分配角色。 是否有可用的教程/拦截器?我为每一个输入感到高兴? PS:quarkus安全ldap扩展不是解决方案,因为它假设角色也存储在ldap中。

  • 我需要一个概念来设计一个使用Spring boot、Hibernate和JPA的多数据库应用程序。 目前我正在考虑支持4个关系数据库(Mysql,H2,SQLLite,Oracle)。 我所做的是使用spring boot profile特性选择正确的数据库profile,然后加载相关的数据库属性。

  • 当我使用security.basic.enabled=false在具有以下依赖项的Spring Boot项目上禁用安全性时: 为了修复此异常,我必须添加属性-management.security.enabled=false。我的理解是,当执行器在类路径中时,应该将security.basic.enabled=false和management.security.enabled=false设置为禁用

  • 问题内容: 有人设置伪装的Maven存储库和/或IP流以提供伪装的原始但被注入恶意或有害代码的库副本的风险和可能性或场景是什么? 采取哪些步骤和措施来预防此类风险和可能性? 问题答案: 我想一个专门的,机智的攻击者可以执行一次MITM攻击,并拦截对公共Maven存储库的所有请求,然后将恶意字节码小心地注入JAR工件中,然后重新计算并提供SHA1哈希值。 对于客户端来说,它看起来像是合法的工件:二进

  • 下面是一个解释线程安全性的示例方法: 为了提供线程安全,有几种方法,我更喜欢使用方法。然而 1.我还想知道是否可以通过对必要的变量使用来提供线程安全。如果是,我如何执行此操作? 2.Java中经常使用作为变量和方法参数来提供线程安全性,这是原因之一吗?