2013-05-09 3 views
0

В настоящее время я работаю над проектом, разработанным на основе SQL и VB.NET. Идея следующая: для пользователей существуют разные разрешения. Администратор предоставляет каждому пользователю определенные разрешения. Идея иллюстрируется в следующем виде:Реализация прав пользователей SQL и VB.NET

enter image description here

Например, пользователь А может получить следующие разрешения:

Он способен добавить новый тендер, изменить существующий тендер, добавить новый клиент.

Пользователь B имеет следующие разрешения:

Он может просматривать существующие тендеры, добавить новых сотрудников, ... и так далее.

Идея о том, как реализовать это в SQL и VB.NET является:

Создание новой таблицы с именем Разрешение со следующими полями:

Идентификатор_пользователя (внешний ключ для идентификатора пользователя), для каждого разрешение будет иметь одно поле, поэтому будет 12 полей.

Теперь в VB.NET будет 12 кнопок (т. Е. Добавьте новый тендер, удалите тендер, ....). Каждая кнопка будет включена и отключена в зависимости от значения поля (если поле = 1, кнопка будет включена).

Вот пример:

enter image description here

enter image description here

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

Очевидно, что этот способ является SILLY и не является профессиональным для реализации.

Мне нужна ваша рекомендация по ее улучшению.

Благодаря

ответ

0

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

При использовании экспортированных авторизации, все, что вам нужно написать в коде (если вообще) является:

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

  • пользователей, которые назначены для клиента может добавить тендеры для этого клиента

Ознакомьтесь с решениями с открытым исходным кодом или решениями для поставщиков, такими как Axiomatics, с которым я работаю. Также проверьте доступные ресурсы на XACML, например. http://en.wikipedia.org/wiki/XACML или видео XACML на YouTube.

+0

Вы также можете использовать диспетчер авторизации Microsoft (http://msdn.microsoft.com/en-us/library/bb897401.aspx) –

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