Я разрабатываю приложение с загрузочной пружиной, и spring-data-rest
является одной из основных зависимостей. Таким образом, для защиты автоматически сгенерированных и ручных конечных точек я использовал подход на основе ролей и пользовательский PermissionEvaluator
для обработки специфичных для объекта проверок подлинности. Это работает, но слишком громоздко и терпит неудачу, когда мне нужен отфильтрованный и разбитый на страницы ответ. Итак, я планирую реализовать ACL. Теперь у меня довольно сложный поток авторизации для сущности.
Пользователи отображаются в профиль (MANY TO MANY). Объект target
также отображается на отдельный объект профиля (MANY TO MANY), и эти 2 объекта профиля отображаются друг на друга (MANY TO MANY). Чтобы проверить, имеет ли конкретный пользователь разрешение на target
объектный объект, мне нужно пройти через отношения в моей логике приложения, в моем PermissionEvaluator
.
Теперь, если я решу реализовать это только в ACL, я не понимаю, как лучше всего это сделать. Предварительная идея, которая у меня была, состоит в том, чтобы создать список объектов непосредственно в таблицах ACL для каждого пользователя (принцип). Это означало бы, что мне нужно будет каждый раз обновлять таблицы ACL новыми объектами, если изменяется разрешение. Это правильный подход? Есть лучший способ сделать это? Можно ли часто изменять таблицы ACL?
Резюме: Если логика проверки того, имеет ли пользователь доступ к объекту, сложна и требует данных из других таблиц, как мне эффективно обработать ее с помощью ACL?