2010-05-16 1 views
2

Я внедряю веб-систему управления документами, и я хотел бы реализовать ACL в своей системе. Мои формальные требования - это иерархические разрешения (документы наследуют разрешения от их папок) групп пользователей (пользователи могут динамически создавать группы и ассоциировать пользователей с группами). Такие группы могут иметь разрешения на объекты в системе.Хорошая реализация ACL в Java

Мой код будет запрашивать разрешение на объектах в двух случаях: 1. Манипулирование один документ 2. Перечисление всех документов, где манипуляция возможно

Последнее требование кажется ахиллесова пята для Spring Security списков управления доступом (их метод, похоже, наносит несколько удалений БД для каждого документа, который я управляю)

Кто-нибудь знает о другой реализации ACL?

Спасибо!

ответ

2

Я не знаком с ACL Spring Security, но я считаю, что типичные ACL требуют, чтобы вы ударили по каждому узлу, чтобы узнать, имеет ли данный руководитель права на этот узел. Я не знаю, собираетесь ли вы найти способ решить эту проблему, не делая каждый раз вызовы canRead() или canAccess() (или что-то подобное) на каждом узле, который вы представляете.

В стороне: Вы оценили с помощью чего-то совместимого с JSR-170 (репозитария контента Java или «JCR») вместо того, чтобы выполнять собственную реализацию полной системы управления документами? Потенциально, вы можете использовать вещи в JCR для бэкэнд и просто написать веб-интерфейс поверх него. Jackrabbit имеет стандартную реализацию ACL, которая должна быть достаточной.