Использование Spring ACL в сложной настройке доступа для объекта - PullRequest
0 голосов
/ 18 марта 2019

Я разрабатываю приложение с загрузочной пружиной, и spring-data-rest является одной из основных зависимостей. Таким образом, для защиты автоматически сгенерированных и ручных конечных точек я использовал подход на основе ролей и пользовательский PermissionEvaluator для обработки специфичных для объекта проверок подлинности. Это работает, но слишком громоздко и терпит неудачу, когда мне нужен отфильтрованный и разбитый на страницы ответ. Итак, я планирую реализовать ACL. Теперь у меня довольно сложный поток авторизации для сущности.

Пользователи отображаются в профиль (MANY TO MANY). Объект target также отображается на отдельный объект профиля (MANY TO MANY), и эти 2 объекта профиля отображаются друг на друга (MANY TO MANY). Чтобы проверить, имеет ли конкретный пользователь разрешение на target объектный объект, мне нужно пройти через отношения в моей логике приложения, в моем PermissionEvaluator.

Теперь, если я решу реализовать это только в ACL, я не понимаю, как лучше всего это сделать. Предварительная идея, которая у меня была, состоит в том, чтобы создать список объектов непосредственно в таблицах ACL для каждого пользователя (принцип). Это означало бы, что мне нужно будет каждый раз обновлять таблицы ACL новыми объектами, если изменяется разрешение. Это правильный подход? Есть лучший способ сделать это? Можно ли часто изменять таблицы ACL?

Резюме: Если логика проверки того, имеет ли пользователь доступ к объекту, сложна и требует данных из других таблиц, как мне эффективно обработать ее с помощью ACL?

1 Ответ

1 голос
/ 14 мая 2019

Я работаю над расширением ACL для Spring Data JPA / Rest, которое решит все ваши проблемы - и многие другие.Чтобы понять, как это работает, требуется некоторое время, но все же требуется гораздо меньше времени, чем для создания всех этих функций для себя.

Вы можете настроить правила доступа с помощью аннотаций в классах сущностей - и это все,это повлияет на автоматически сгенерированные и ручные конечные точки и даже на методы репозитория данных JPA.

Spring Data JPA ACL

...