我有一个应用程序,文档创建者确定要提供的访问权限。权限的格式为:
示例:
在索引中,我们有creator_ids表示创建文档的用户列表。例如对于doc1: creator_ids = [1]
MY_FRIENDS列表(对于每个文档创建者)由不同的模块决定,可在运行时访问。
文档可以由多个用户创建,每个用户都可以独立授予权限。 e.g:
对于多个创建者的情况,使用限制较少的权限。 e.g:
我已经检查了几个讨论,找不到符合上述模型的讨论:
为了处理安全问题,我考虑了两种方法:
创建一个动态字段(“permissions_ *”),其中包含每个文档创建者的权限。 e.g:
a) For doc1 permissions_1=1
b) For doc4 permissions_4=1 & permissions_5=3
Then a created a runtime method that checks each document permission (s) and decides if user trying to access is allowed.
对于每个权限,创建一个包含已设置该权限的用户的字段。 e.g。
a) For doc2 permission_1=[4], permission_2=[] & permission_3=[5]
b) For doc5 permission_1=[], permission_2=[6] & permission_3=[7]
Then use solr fq query to filter out documents based on permissions. However, I am not an expert in solr, so I still trying to find out how to create such a query.
几个问题:
提前致谢。
答案 0 :(得分:0)
首先,您应该将您的权限设置为ACL,以便它包含适当的ACE(例如“允许User_A Friends”和“允许User_B Me_Only”)。您可以选择将此信息与文档一起索引,或者如果权限经常更改并且您不想重新索引,则可以实现外部(自定义)缓存。 您可以实现接收用户(名称,ID,等等)的自定义过滤器,并根据您上面提到的规则评估其权限。如果用户数量和文档数量很大,我建议将其实现为PostFilter。有关详情,请参阅此帖子:http://java.dzone.com/articles/custom-security-filtering-solr