Я сделал это во многих приложениях.
Включите проверку подлинности 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)
Таким образом, пример выполнения панели может быть:
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
}
Надеюсь, это поможет.