Разработка системы ролей и групповых разрешений - MongoDB - PullRequest
0 голосов
/ 03 декабря 2018

Я работаю над проектом ERM и пытаюсь придумать подходящий дизайн схемы для пользователей, ролей и групп в MongoDB`.Я новичок в разработке баз данных, и в настоящее время я создал этот дизайн.

  • Пользователь может иметь одну роль
  • Пользователь может быть членом нескольких групп
  • Обе ролии группы имеют отдельные разрешения для каждого
  • Как роли, так и группы могут быть добавлены, удалены и обновлены
  • Разрешения пользователя рассчитываются по роли и группам

И разрешениерасчет для пользователя выполняется следующим образом:

Роль [USER обновление ] + Группа [USER просмотр ] = Пользователь [USER просмотр, обновление ]
Роль [BLOG запретить ] + группа [BLOG просмотр ] = Пользователь [BLOG запретить ]

Проблема, с которой я сталкиваюсь, заключается в расчете разрешений, поскольку этот дизайн потребует расчета разрешений при каждом изменении группы / роли.И если группа содержит сотни пользователей, это может вызвать проблемы с производительностью.

User {
    role: String
    permissions: [{
        resource: String,
        value: Number // Read(4), Edit(2), Create(8), Delete(1)
    }]
}

Role {
    name: String,
    permissions: [{
        type: String,
        ref: 'Permissions'  
    }]
}

PermissionGroup {
    name: String,
    users: [{
        type: String,
        ref: 'User' 
    }],
    permissions: [{
        type: String,
        ref: 'Permissions'  
    }]
}

Permissions {
    resource: String,
    value: Number // Read(4), Edit(2), Create(8), Delete(1)
}

Я хочу сделать это как можно более эффективным, поскольку при авторизации каждого запроса используются права пользователя.Каковы некоторые лучшие методы производительности для этого дизайна?

...