Это гораздо более концептуальный вопрос, чем другие.Мне интересно, есть ли лучшая практика и где я могу прочитать об этом, а также не знаю, как спросить об этом в Google.
Я работаю над моделированием базы данных mongodb.Допустим, у нас есть коллекция chair
, которая должна храниться в отдельной коллекции от коллекции user
, потому что стул может принадлежать нескольким пользователям и иметь к ним доступ.Это поднимает проблему списка контроля доступа.Обычно в других проектах меня использовали для определения разрешений для пользовательской коллекции:
{
_id: 5ce3f94a6591bd5a3accd22e,
permissions: [
{
collection: 'chairs',
path: 'serialNumber',
allowedValues: /^AU-1234-.*/ig,
roles: ['read']
}
]
}
Таким образом, мы можем предоставить пользователю доступ к каждому креслу, для которого его serialNumber
начинается с 1234
.
Прямо сейчас мне интересно, не будет ли лучше определить кресло с разрешенными пользователями:
{
_id: ...,
serialNumber: 'AU-1234-567',
allowedUsers: [{
user: 5ce3f94a6591bd5a3accd22e,
roles: ['read'],
},
... ]
}
Это больше похожий подход к файловым системам Unix, где любой файлимеет своего владельца и группу, и каждый пользователь может принадлежать к нескольким группам.Имеет ли это смысл в mongodb?
Я видел, что, например, модуль acl
хранит отдельные коллекции, чтобы предоставить пользователю доступ к ресурсам, но кажется убийственным решением и сложным в обслуживании.Есть ли какие-либо рекомендации или просто Do as much better as you can
.