Интересно, есть ли полезные практики, как защитить сущности на бэкэнде, не извлекая все время корневые сущности.
Допустим, у вас есть приложение (например, Spring Boot + MySQL) со следующими сущностями:
- Пользователь : у каждого может быть много
project
или ни одного вообще. - Проект : каждый принадлежитПользователь и может иметь много Элементов или ни одного вообще.
- Элемент : каждый из них принадлежит Проекту и может иметь много Комментариев или вообще никого.
- Комментарий : каждый из них принадлежит к Предмету или вообще никому.
Что-то классическое, например
User --> Project --> Item --> Comment
Интересно, как эффективно проверить, если пользовательимеет право, например, удалить Comment
.
Моей первой идеей будет присоединиться обратно к Project и затем проверить, имеет ли пользователь право изменять этот проект.
Я такжеПодумайте о большой таблице сопоставления с каждой сущностью, чтобы не было двух соединений.Но, похоже, беспорядок в синхронизации.
В-третьих, я думаю, что база данных, ориентированная на документы, может быть лучше, чем классическая MySQL / MariaDB.
Поэтому мой вопрос заключается в том,Есть ли концепция или, может быть, конкретная реализация / библиотека / пример, как решить эту проблему?