Лучший способ реализовать RBAC с помощью Access - PullRequest
0 голосов
/ 31 января 2012

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

Users (ID,Login, password,..)
Roles(ID,Rolename)
User_Roles(User_ID, Role_ID)
Permissions(ID,PermissionName)
Permission_Roles(Permission_ID, Role_ID)

Моя идея заключалась в создании функции, которая позволяет проверять, есть ли у пользователя определенные разрешения на доступ к форме.Я бы сделал это, создав Permissions / Rules, такие как 'canReadFormX', 'canEditFormX', которые позволили бы мне использовать одну основную функцию для проверки и выполнения этих конкретных правил и функцию в форме для ее вызова.

Этопуть (или, вернее, я все правильно понял в отношении RBAC) или это просто слишком сложно?Любой совет очень ценится!

1 Ответ

2 голосов
/ 31 января 2012

Мне кажется, что это справедливо и похоже на то, что мы уже установили для первых трех таблиц.

Затем вам нужно решить проблему «действия», то есть распределить разрешения на использование действий вашего приложения. Я не уверен, что ваше предложение «Разрешения» будет охватывать все ситуации, так как вам приходится иметь дело с 2 основными категориями действий:

  1. Действия «Открытая форма», которые вы уже определили: вам фактически нужно определить 2 уровня авторизации для каждой формы: право «просмотр» и право «обновление».
  2. Все другие действия, такие как кнопки или меню для конкретных форм, которые позволят вам выполнить определенное действие, отличное от простого открытия формы (выполнить отчет, выполнить определенный расчет, автоматически импортировать или обновить данные и т. Д.).

Одно из решений / Мой совет - сохранить 2 таблицы для этого:

  • Таблица «Формы»
  • Таблица «Действия»

И соответствующие таблицы ссылок:

  • Таблица «Form_Role»
  • Таблица «Action_Role»

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

Таблицы Forms и Actions очень интересны, так как они оба участвуют в метамодели вашего приложения ...

РЕДАКТИРОВАТЬ: Кстати, если вы находитесь в домене, вы можете использовать учетные данные домена пользователя для управления его правами доступа к вашей системе. В этом случае вам не нужно хранить пароль в вашей системе RBAC.

...