mahoro
Новичок
Хранение прав доступа в базе.
Делаю систему аутентификации, стандартная вроде бы задача: Пользователи, группы, разделы сайта. Членство каждого пользователя строго в одной группе, наследование прав пользователя из прав его группы + персональные.
Возможность некоторые разрешения выставить для конкретного раздела (например, модерирование в раздела А, но не Б). Разделы создаются динамически.
При этом проверка должна быть максимально быстрой, как минимум для прав, неспецифичных для конкретного раздела. (Хочется в зависимости от прав доступа отрисовать корректное меню сайта, например). В идеале хочется иметь возможность получить их все простейшим запросом select.
Собственно, сейчас я имею таблицу прав вида:
| who | what | type | rule | section |
где type указывает на тип разрешения - групповое или персональное
who - ссылка на группу или пользователя.
section - раздел сайта
Но пока есть время подумать, рассматриваю такой вариант:
who | type | section | rule1 | rule2 | rule3 | ..... ruleN
А как бы сделали вы?
Какие могут быть подводные камни при работе с такими "широкими" таблицами? Колонок может быть до пятидесяти.
Делаю систему аутентификации, стандартная вроде бы задача: Пользователи, группы, разделы сайта. Членство каждого пользователя строго в одной группе, наследование прав пользователя из прав его группы + персональные.
Возможность некоторые разрешения выставить для конкретного раздела (например, модерирование в раздела А, но не Б). Разделы создаются динамически.
При этом проверка должна быть максимально быстрой, как минимум для прав, неспецифичных для конкретного раздела. (Хочется в зависимости от прав доступа отрисовать корректное меню сайта, например). В идеале хочется иметь возможность получить их все простейшим запросом select.
Собственно, сейчас я имею таблицу прав вида:
| who | what | type | rule | section |
где type указывает на тип разрешения - групповое или персональное
who - ссылка на группу или пользователя.
section - раздел сайта
Но пока есть время подумать, рассматриваю такой вариант:
who | type | section | rule1 | rule2 | rule3 | ..... ruleN
А как бы сделали вы?
Какие могут быть подводные камни при работе с такими "широкими" таблицами? Колонок может быть до пятидесяти.