Я рассматриваю лучший способ разработки системы разрешений для веб-приложения "admin". В приложении, вероятно, будет много пользователей, каждому из которых может быть назначена определенная роль; некоторым из этих пользователей может быть разрешено выполнять определенные задачи вне роли.
Я могу подумать о двух способах создания этого: один, с таблицей "разрешений" со строкой для каждого пользователя и булевыми столбцами, по одному для каждой задачи, которые назначают им разрешения для выполнения этих задач. Вот так:
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
Какие механизмы обычно используют люди, и почему?
Спасибо!