Как реализовать ролевую безопасность с использованием динамических данных и Active Directory?

StackOverflow https://stackoverflow.com/questions/604175

Вопрос

Как лучше всего реализовать безопасность с использованием ролей активного каталога на сайте динамических данных asp.net?

Я хотел бы ограничить определенные представления (и соответствующие ссылки) определенными ролями.то естьпользователь A может просматривать только действия списка для таблицы x, а пользователь B может просматривать только действия списка для таблицы y.

Это было полезно?

Другие советы

Я сделал это во многих приложениях.

Включите проверку подлинности Windows для вашего приложения.

Создайте какой-нибудь объект, который может хранить учетные данные пользователя, и сохраните этот объект в сеансе для быстрого извлечения.Если его там нет, вы можете быстро его восстановить.Обычно у меня для каждой роли установлено определенное значение, например:


enum USER_ROLE : int
{
  Role1 = 1,
  Role2 = 2,
  Role3 = 4,
  Role4 = 8,
  etc
}

if (Context.User.IsInRole("Roll1Name")) YourUserObject.Roles += USER_ROLE.Role1;
if (Context.User.IsInRole("Roll2Name")) YourUserObject.Roles += USER_ROLE.Role2;
etc

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

Например.bool SetControlSecurity (HtmlControl ctrl, int iUserRoles, int iControlRoles, ACTION eAction)

Итак, примером создания панели может быть:

SetControlSecurity(pnlUserInfo, YourUserObject.Roles, eRole.Role2, ACTION.Hide);

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

Сравнить роль в функции легко:


bool bHasAccess = ((iUserRole & iControlRoles) > 0);
if (bHasAcess)
{
  // leave the control or make sure it is visible etc
}
else
{
  // take action to secure the control based on the action
}

Надеюсь, это поможет.

Вы можете просто использовать поставщиков членства и ролей ASP.NET Active Directory для аутентификации и авторизации пользователей в приложении.Тогда вы можете позвонить в Роли.IsUserInRole где бы вы ни хотели проверить членство в роли AD, чтобы проверить, являются ли пользователи частью соответствующих групп, прежде чем отображать содержимое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top