2009-11-04 3 views
1

В настоящее время я пишу веб-приложение, имеющее около 6-12 страниц. На каждой из этих страниц я хочу, чтобы пользователь мог выполнять некоторые (или все) следующие действия: просмотр, добавление, обновление и удаление.Elegant Web Permission Schemes

Текущая схема разрешений, о которой я думал, имеет целое число в базе данных. Это целое число будет соответствовать двоичному числу (например, 26 -> 11010). Получающееся двоичное число действует как «переключение» и определяет, какие разрешения у пользователя есть. Определение того, какой бит представляет, какое разрешение хранится в другой таблице.

Моя проблема в том, что каждая страница имеет 4 варианта (просмотр, добавление, редактирование, удаление), тогда этот способ определения разрешений может выйти из-под контроля.

Есть ли у кого-нибудь какие-либо идеи относительно схемы разрешения, которая была бы такой же гибкой (в отношении конфигурируемости), как это, но не столь же подавляющей (в отношении целых пределов)?

ответ

5

Возможно, лучший ответ, если вам действительно нужно идти по этому пути, должны иметь строку на странице/каждый пользователя в базе данных, с набором разрешений, так что ваша таблица выглядит так:

page  user  create read update delete 
=====  ===== ====== ==== ====== ====== 
test.html joe  y  y y  n 
test2.html joe  n  y y  n 

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

2

Я предлагаю вам не прибегать к битам. Используйте отдельные столбцы в БД для каждой категории разрешений и используйте целые числа 1 и 0, чтобы указать, предоставлено ли это разрешение или нет. Это избавит вас от манипуляций с битами и будет быстрым. Единственным недостатком будет большее количество столбцов, которые по вашему описанию, похоже, не являются проблемой.

+1

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