2009-10-17 2 views
0

Я разрабатываю раннюю версию своего сайта, и до того, как я создаю производственную версию, мне бы хотелось, чтобы мнения людей о том, правильно ли я собираюсь сделать что-то в этом роде. Основная цель - предоставить пользователям возможность использовать плейлисты. У меня есть таблица User (членство в ASP.NET), таблица плейлистов и таблица разрешений. Я хотел бы, чтобы пользователь создал список воспроизведения и предоставил/запретил доступ к нему для данного пользователя. Мой подход к этому заключается в том, чтобы таблица разрешений содержала столбец «pStatus», где 0/null = deny, 1 = read. Когда пользователь запрашивает разрешение на доступ к списку воспроизведения, создатель выбирает перечисление pStatus. Затем столбец изменен для получателя. При доступе к странице профиля получателя выполняется проверка столбца для проверки всех списков воспроизведения, к которым имеет доступ получатель, и отображаются соответствующие списки воспроизведения. Является ли это эффективным и безопасным способом делать что-то? Или недостаточно полагаться на один столбец?Разрешение на основе одного столбца - безопасно?

(NB - плейлист можно считать быть похожим на Facebook группы)

Спасибо за любые советы

ответ

1

Я бы использовал некоторую битовую маску в таблице отношений nm, которую я угадываю, между пользователем и списком воспроизведения (т.е. таблицей с именем UserPlaylist, поскольку 1 пользователь может иметь доступ к более чем 1 плейлисту и наоборот 1 плейлист может доступ к ним осуществляется более чем одним пользователем).

Если вы определяете необходимые уровни разрешений спереди (т. Е. 0 = нет доступа, 1 = чтение, 2 = запись и т. Д.), Вы можете просто добавить столбец в таблицу UserPlayList, представляющую уровень доступа.

Таким образом, таблица UserPlaylist будет иметь 2 столбца внешнего ключа, для которых комбинация должна быть уникальной (т. Е. Определить первичный ключ как 2 столбца внешнего ключа) и столбец, который содержит уровень доступа в виде бит/integer.

+1

Моя таблица разрешений - это, по сути, таблица UserPlaylist, но у меня была дополнительная таблица PK (инкрементирование int) для каждой записи. Я удалю этот столбец и использую комбинацию User и Playlist как ПК. Спасибо – keyboardP

1

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

В противном случае это звучит хорошо для меня.

+0

Возможно, я использую три настройки (нет, чтение и запись), поэтому в третьем столбце будет указан параметр. Спасибо – keyboardP

Смежные вопросы