使用spring boot、jpa和security的多用户restful api

Posted

技术标签:

【中文标题】使用spring boot、jpa和security的多用户restful api【英文标题】:Multi-user restful api using spring boot, jpa and security 【发布时间】:2016-02-12 02:30:43 【问题描述】:

我想创建一个多用户 api,用户可以在其中登录到一个安静的服务并拥有自己的空间来进行预订课程。预订不会在用户之间共享。

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

我正在使用 Spring Boot JPA 并使用 @Entity 定义用户和预订类。

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

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

编辑:有人建议我研究 ACL,但我正在努力寻找好的简单资源来解释它们是如何工作的

【问题讨论】:

【参考方案1】:

如果你真的有每个用户的独立数据,并且你想要一个透明的机制来选择或更新你被允许看到的数据,你应该看看 T eclipselink 的多租户支持。

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

这是一个关于在 spring-data-jpa 中设置的已接受答案的问题 Multi tenancy with spring data jpa and eclipselink

hibernate 似乎也支持多租户 http://docs.jboss.org/hibernate/orm/5.0/userGuide/en-US/html_single/#d5e3197

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

【讨论】:

以上是关于使用spring boot、jpa和security的多用户restful api的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot JPA

Spring boot JPA

哪些步骤可以使用 Spring-Boot 和 JPA 启用 SQLite?

使用 spring-data-jpa 和 MockMvc 进行 spring boot junit 测试

Spring Boot + Spring Batch + Spring JPA

Spring Boot 和 JPA 2.0