Ответ 1
PermissionEvaluator
отвечает за оценку выражения, чтобы определить, имеет ли пользователь разрешение для данного объекта домена. С другой стороны, AclService
предоставляет интерфейс для извлечения экземпляров Acl
. В духе Разделение проблем каждый компонент затрагивает отдельную проблему.
Если какая-либо реализация PermissionEvaluator
должна выполнять оценку на основе экземпляров Acl
, она должна делегировать AclService
для их извлечения. Фактически AclPermissionEvaluator
делает именно это.
Я предлагаю вам пойти этим путем. Отдельная оценка из списка ACL. Если концепция Spring AclService
и Acl
слишком сложна или сложна для вашего варианта использования, вы можете представить свою собственную службу для получения пользовательского ACL. Затем выполните PermissionEvaluator
, который будет делегировать вашу службу ACL.
На самом деле, мне нужно было сделать что-то подобное, потому что мне нужно было хранить списки ACL в базе данных NoSQL, а какие Spring - не работали для меня.
Я бы сказал, что это все усилия, необходимые для настройки Spring ACL для удовлетворения ваших требований и усилий по внедрению пользовательского решения. Если ваши требования могут быть удовлетворены реализацией ACL по умолчанию Spring, пойдите для этого. Это, безусловно, сэкономит ваше время для реализации вашего пользовательского решения. Однако, если невозможно адаптировать Spring ACL к вашим требованиям или это будет слишком сложно, тогда вам может быть проще реализовать свое пользовательское решение.