Каков рекомендуемый способ обработки различных пользовательских ролей в приложении C #? - PullRequest
4 голосов
/ 07 июня 2010

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

Я мог бы создать таблицу под названием Users с именем пользователя и паролем и в соответствии с идентификатором usertype ID показать форму или другую форму.Но меня больше интересует рекомендуемый подход опытных программистов.

Любой совет?

Редактировать: Я ищу что-то, что будет достаточно безопасным, нотакже достаточно расширяемый.

Ответы [ 5 ]

1 голос
/ 08 июня 2010

Если это простое приложение, не используйте космический корабль, чтобы перейти дорогу.

Создайте следующую схему БД:

Пользователи : имя пользователя и хешированный пароль

Роли : RoleName, RoleID, RoleStrength (int)

RolesMembership : таблица Rolemembership, содержащая идентификаторы пользователей и ролей, позволяющие использовать в будущем несколько участников.

При настройке ролей присвойте им числовой вес. т.е.: администраторы = 1000, опытные пользователи = 500, гости = 10. Таким образом, в ваших формах можно сказать, если уровень пользователя 500 или выше, установить полный просмотр, в противном случае, только просмотр или отсутствие доступа.

Еще лучше, абстрагировать его с помощью класса безопасности с помощью таких методов, как IsPowerUser или IsAdmin.

Это просто, читабельно и многократно.

1 голос
/ 07 июня 2010

Даже если я не могу считать себя «опытным», я бы дал свой ответ, поскольку в эти недели я сталкиваюсь с той же проблемой.

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

Таким образом, существует одно определение разрешений для нескольких пользователей, что лучше, чем определение роли с использованием типа для каждого пользователя, поскольку маску разрешений можно изменять и расширять.

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

0 голосов
/ 07 июня 2010

Несмотря на ориентацию на ASP.NET, я бы настоятельно рекомендовал проверить эту статью: http://www.4guysfromrolla.com/articles/120705-1.aspx

Вы можете использовать встроенные объекты Membership и Roles (даже в настольном приложении) для определения своих собственных схем привилегий. Использование этой функции избавляет от необходимости создавать собственные записи базы данных для таблиц пользователей (и ролей), а также обрабатывать хеширование паролей для вас (что приводит к повышению безопасности приложений).

Наконец, официальные статьи MSDN, которые вы можете прочитать:

О «Членстве»: http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

О «ролях»: http://msdn.microsoft.com/en-us/library/ff647401.aspx

0 голосов
/ 07 июня 2010

Если вы используете Visual Studio, я бы просто использовал встроенные поставщики членства. Это позаботится о вашей базе данных и обо всем автоматически. Не нужно изобретать велосипед.

0 голосов
/ 07 июня 2010

Я мог бы создать таблицу под названием Users с именем пользователя и паролем и в соответствии с идентификатором типа пользователя показать форму или другую форму.

Звучит как разумный способ обратиться ко мне.Просто не забудьте хэшировать пароли.

Я бы также составлял общие элементы управления в формах, чтобы вы могли повторно использовать общие части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...