我们在其中一个自定义中对Alfresco中的动态权限实施了权限检查。迁移到solr时,受我们的动态权限影响的那些节点的搜索结果会出错。原因似乎是在查询时进行了权限检查,但是我们的动态权限没有考虑在内:(
以下是我们的动态权威机构如何运作的简短说明:
检查节点是否与权限关联,如果当前用户属于该权限(组) - >批准访问。该节点有很多不同的关联,每个人都会被检查,并根据它所属的关联给予READ或WRITE访问权限。
有没有告诉搜索服务对返回的节点进行权限检查(如lucene那样)?我想到的一种解决方法是以管理员身份运行查询,然后迭代结果并手动执行权限检查?
这可能是一种解决方法吗?您可以与我分享的其他想法吗?
答案 0 :(得分:3)
当security.anyDenyDenies
属性设置为true
时,Alfresco将对SOLR结果执行查询后权限检查。该检查将涉及任何动态权限,即它将是标准检查。
那么主要的问题是从SOLR获得完整的结果而不需要在那里进行预过滤。除了在System
的自定义子类中将runAs用户设置为org.alfresco.repo.search.impl.solr.SolrQueryLanguage
之外(super.executeQuery
方法调用 - bean search.lucene.alfresco
内,search.solr.alfresco
{,search.fts.alfresco.index
中的},search.solr.cmis
和solr-search-context.xml
,我认为没有更简单的方法来实现这一目标。
注意:这适用于Alfresco 4.2d及更高版本 - 我不知道何时实际引入了SOLR的查询后权限,但是当4.0出现AFAIK时它们不存在。