2015-11-11 52 views
7

我想创建一个多用户API,用户登录到一个宁静的服务,并有自己的空间来说预订类。用户之间不共享预订。多用户平静API使用弹簧引导,jpa和安全

我努力去理解什么是最好的模式来创造这个,同时尽可能地利用春季启动的魔力。

我正在使用Spring Boot JPA并使用@Entity定义一个User和Booking类。

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

(注意:我是新来的弹簧,弹簧引导等)

编辑:它已经建议我考虑的ACL,但我在努力寻找善良单纯的资源,解释它们是如何工作

+0

我还发现了一个视频教程,该视频教程使用注释来限制特定用户(接近视频结尾处)https://www.youtube.com/watch?v=_1EFB6fk2_8&list=PLTgRMOcmRb3Oenxtwc-F3kQL8B_7mWdgx&index=3&spfreload=1 –

回答

5

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

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

下面是关于弹簧数据的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进行过滤 - 因此分离非常严格。

+0

太棒了 - 谢谢。看起来非常有趣。似乎更适用于需要完全分离的情况。 –

+1

准确地说 - 如果您真的需要完全分离数据,我只会使用它 - 但您可以在实体级别将其切换 - 所以您不必在所有实体上启用租户 –