2012-08-26 4 views
0

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

Я также не хочу, чтобы сделать много швов, так что я, как мышление это:

я буду иметь 4 различных ролей пользователей (по крайней мере сейчас) следующим образом:

user 
client 
reviewer 
admin 

Я буду оценивать «id» для каждой роли. В то же время я буду поддерживать таблицу в mysql с этими ролями. Это будет что-то вроде:

1 - admin 
2 - reviewer 
3 - client 
4 - user 

Эта таблица будет использоваться только при создании пользователя, чтобы получить код пользователя «разрешений». Итак, скажем, что будет парень, который является пользователем и рецензентом. Его роль будет 24.

login password email role  created 
---------------------------------------------------------- 
guy password [email protected] 24 2012-12-08 23:12:30 

Я думаю, что это может работать очень хорошо, но все же хочу спросить, если вы, ребята, думаете, что это хорошее и эффективное решение. Спасибо

ответ

1

Другой способ сделать это - иметь много-много таблиц USER_ROLE, где для вашего примера у парня будет следующее.

login role 
guy 2 
guy 4 

Обычно я предпочитаю этот метод отслеживания ролей. Присоединение к этой таблице в такой ситуации должно быть быстрым и безболезненным, особенно если вы перейдете к использованию user_id вместо входа и индексируете соответствующим образом.

+0

Конечно там будет user_id, я просто написал это быстро, например. Я тоже об этом думал, но мне все равно не нравится, что присоединяюсь. – Tom

0

Что вы определяете - это система контроля доступа на основе ролей (я бы предложил искать ресурсы на этом). Система RBAC будет иметь отдельную таблицу для пользователей и другую таблицу для ролей. Между пользователями и ролями будет много разных взаимоотношений. Кроме того, вы подключите таблицу разрешений к ролям в отношениях между многими и многими. Изображение прилагается показывает, как реализовать эту систему: RBAC SYSTEM IN MYSQL

Аналогичный вопрос был задан раньше: How to design a hierarchical role based access control system

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