Каков наилучший способ управления разрешениями для веб-приложения - битовая маска или таблица базы данных?

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

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

User ID          Manage Users     Manage Products     Manage Promotions     Manage Orders
1                true             true                true                  true
2                false            true                true                  true
3                false            false               false                 true

Еще один способ, о котором я подумал, - использовать битовую маску для хранения этих пользовательских разрешений. Это ограничит число задач, которыми можно управлять, до 31 для 32-разрядного целого числа со знаком, но на практике у нас вряд ли будет более 31 конкретной задачи, которую может выполнить пользователь. Таким образом, схема базы данных будет проще, и нам не придется менять структуру таблицы каждый раз, когда мы добавляем новую задачу, которая требует контроля доступа. Нравится:

User ID          Permissions (8-bit mask), would be ints in table
1                00001111
2                00000111
3                00000001

Какие механизмы обычно используют здесь люди и почему?

Спасибо!

Ответы на вопрос(8)

Ваш ответ на вопрос