2014-03-13 46 views
1

我們在我們的定製之一中使用Alfresco中的動態權限實施了權限檢查。遷移到爲受我們的動態權限影響的節點搜索結果時出現故障。原因似乎是權限檢查在查詢時完成的,但是我們的動態權限不考慮:(用solr發佈查詢權限檢查是否可行?

這裏是一個簡短的解釋我們的動態當局是如何工作的:

檢查節點是否有到一個權威的關聯,如果當前用戶屬於機構(組) - >批准接入節點有很多不同的關聯的每個人都被檢查和給出的READ或取決於它所屬的關聯WRITE訪問

是否有反正告訴搜索服務在返回的節點上進行權限檢查(就像lucene一樣)?我想到的一種解決方法是運行以管理員身份查詢,然後迭代結果並手動進行權限檢查?

莫非是一種方法來解決呢?您可以與我分享任何其他想法?

回答

3

security.anyDenyDenies屬性設置爲true時,Alfresco將對SOLR結果執行查詢後權限檢查。這個檢查將涉及任何動態權威機構,即它將是一個標準檢查。 然後,主要問題是從SOLR獲得完整結果,而無需預先過濾。除了設置的runAs用戶System在自定義子類的org.alfresco.repo.search.impl.solr.SolrQueryLanguage(內/周圍super.executeQuery方法調用 - 豆(收費)solr-search-context.xmlsearch.lucene.alfrescosearch.solr.alfrescosearch.fts.alfresco.indexsearch.solr.cmis),我看不出有什麼簡單的方法來實現這一目標。

注:這適用於露天4.2D和後 - 當後查詢權限SOLR實際上已經出臺,我不知道,但他們不在場的時候4.0出來AFAIK。

+0

在solrcore.properties有一個屬性'''alfresco.doPermissionChecks = true''' 。我不知道會發生什麼,有人將任何DenyDenies設置爲true,並將該屬性設置爲false?它會執行後查詢檢查嗎? – billerby

+2

這可能實際工作 - 我從來沒有嘗試過與該屬性撥弄自己,忘了寫答案的時候...... 編輯:經過代碼在'SolrAuthoritySetScorer',它並觸發所有指標納入葉結果當設置爲false時。 –

+0

好了,總結一下,回答的問題是:一)'security.anyDenyDenies'(在露天屬性)是'默認TRUE',所以離開這樣的說法,B)設置'alfresco.doPermissionChecks'(在給定的Solr配置子文件夾內的solrcore.properties中)設置爲「false」。 (使用Alfresco 5.2測試成功) –