2014-09-03 2 views
0

Чтобы ограничить доступ узла к пользователю (используя principalbased.ACL), пытался со следующими сниппет, но оказывается неэффективным:Создание пустой строки для «повторении: Glob»

Map<String, Value> restrictions = new HashMap<String, Value>(); 
//Apply privilege to user to have read only access to root folder 
restrictions.put("rep:nodePath", valueFactory.createValue(ROOT, PropertyType.PATH)); 
restrictions.put("rep:glob", valueFactory.createValue("")); 
accessControlList.addEntry(userPrincipal, privileges, true , restrictions); 
accessControlManager.setPolicy(accessControlList.getPath(), accessControlList); 

Есть ли другой способ установить rep: glob Недвижимость ""?

Когда я предоставляю доступ к root ('/'), он должен получить доступ только к этому. Вместо этого все узлы под root доступны для пользователя.

+0

Что вы подразумеваете под * неэффективным * и чего вы ожидаете? – tmarwen

+0

Я имел в виду, coz, rep: glob, установленный в пустую строку, действует как '*'. Следующий эффект фрагмента идентичен: limits.put ("rep: glob", valueFactory.createValue ("")); limits.put ("rep: glob", valueFactory.createValue ("*")); – techie2k

+0

Извините, если я не в нужном контексте, но я не могу понять, что вы собираетесь точно сказать. Не могли бы вы рассказать мне, что вы ожидаете с точки зрения * безопасности * и * ограничения *. Что вы ожидаете от того, что узел ведет себя так, как если бы вы установили пустую строку 'String' (' '' ') в свойство' rep: glob'? – tmarwen

ответ

0

Даже этот (http://jackrabbit.apache.org/api/2.2/org/apache/jackrabbit/core/security/authorization/GlobPattern.html) рисунок не работает для корня. В любом случае, я использовал другой подход, чтобы пропустить проверку доступа к корню при получении пользователя. Необходимо предоставить SimpleWorkspaceAccessManager в теге SecurityManager.

1

Если вы не предоставляете свойство rep:glob, ограничивая доступ к главному, ACL по умолчанию влияет на все поддерево целевого узла. Таким образом, дополнительная опция rep:glob сэкономит вам время на создание ограничений по каждому пути, который вы хотите ограничить политикой, и принимает JCR Values, а прошедший String экземпляр при создании этого Value будет оказывать влияние на ограничение узлов/субнодов при применении на ndoe с путь «/ Foo»:

----------------------------------------------------------------------------------- 
    rep:glob value |       Effect       | 
----------------------------------------------------------------------------------- 
     null  |    matches /foo and all its children    | 
----------------------------------------------------------------------------------- 
    "" (Empty String)| matches "/foo" only           | 
    * (wildcard)  | all descendants            | 
    /*bar   | all childrens which path ends with "bar"      | 
    /*/bar   | all non-direct descendants of "/foo" named "bar"    | 
    /bar*   | all childrens which paths begin with "bar"     | 
    *bar    | all siblings and descendants of "/foo" that begin with "bar" | 
----------------------------------------------------------------------------------- 

Если ограничение не применяется только для целевого узла, то должна быть какая-то ошибка где-то, и вы, возможно, потребуется разместить весь фрагмент кода для получения дополнительной помощи.

Смежные вопросы