设为首页 收藏本站
查看: 1159|回复: 0

[经验分享] Solr搜索结果ACL 控制另类设计

[复制链接]

尚未签到

发表于 2016-12-16 10:52:50 | 显示全部楼层 |阅读模式
  版权所有, 转载请保留连接http://wangbt5191-hotmail-com.iyunv.com/blog/1734160
问题提出
  在某人的前东家那里, 在企业级别协作平台中, 文档是是管理在内容容器中, 这个内容容器可以是community 和project, 类似于Jive 的管理方式。

1. 容器以及容器的描述信息可以对容器外用户搜索开放, 以方便用户发现更多的容器;

2. 容器中的内容希望对容器外的用户搜索封闭, 以保护容器中的文档信息不会被较低权限的人所看到。

比如我们有如下组织的内容容器



-Company A (community)
  --Department RD(community)

    --- Department Dev (community)

         ---- Front End Team (community)

              ----Project web component 1.0

              ----Project Appllo Front End(project)

         --- Server Team(community)

              ----Project Appllo Server End(project)

              ----Project Search Engine Refactor(project)

    --- Department Testing (community)
       ---- Project Appllo Testing (project)

    --- Architecture Team (community)
  --Department Sales(community)


-Company B (community)

    这里我们假设A 公司有研发经理他是需要能够查看整个RD 社区下的内容, 又有Appllo 开发参与了项目Appllo 需要能够查看 Project Appllo Front End, Project Appllo Server End 和 Project Appllo Testing的内容。
方案
  
在内容创建的时候, 比如我们在Project web component 1.0 下新建一个文档, 那么它在容器管理中的路径应该是 Company A/Department RD/Department Dev/Front End Team/Project web component 1.0, 在文档创建索引的时候, 就带上Path 这个属性, 并且对path 进行索引。 当搜索要求到来的时候,业务调用方需要告诉搜索引擎当前用户所能看到的容器权限。 那么上文提到的研发经理, 那么他能够看到path Company A/Department RD 下的所有文档, 那么我们在搜索query中附加条件是 path:"epartment RD", Appllo 开发人员, , 我们在搜索query 中的附加条件是 path:"Project Appllo Front End" OR path:"Project Appllo Server End" OR  path:"Project Appllo Testing"
设计约束:
  1.需要业务系统管理整个容器权限
2. 用户登录以后获取用户在整个系统中的权限树并存储在缓存中
3. 用户在添加文档的时候, 系统往搜索引擎中推入文档数据不需要考虑用户的权限, 只需要保存文档本身的信息,包括文档在系统中的目录结构
4. 用户在搜索的时候, 需要附加用户可见的所有子节点目录, 如果某节点下的所有子节点用户都可见, 那么只需要给出这个当前节点。 举例:
     假如有用户他有对以下容器的读权限 Company A/Department RD/Department Dev/Front End Team/Project web component 1.0 和Company A/Department RD/Department Dev/Project Appllo Front End, 那么我们只需要给搜索引擎 Company A/Department RD/Department Dev/Front End Team 就好了
  5. 通过一定规则保证容器名(容器ID)之间不会出现重复。
对于数据变动的影响:
  1. 用户在应用系统中的角色权限发生变化, 我们不需要对已经生成的文档进行重新索引
2. 应用系统中的容器隶属关系发生变化, 比如我们这个时候Company A把Company B收购过来了, 那么我们需要对相关变化的容器中的文档进行全部重新索引, 也就是需要把Company B 的内容容器中的文档进行索引重建。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-315107-1-1.html 上篇帖子: solr中WordDelimiterFilter与autoGeneratePhraseQueries的用法 下篇帖子: Solr 表达式语法相关[转]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表