Как настроить видимость пользовательского элемента управления в зависимости от роли пользователя - PullRequest
1 голос
/ 11 марта 2011

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

Вот как может выглядеть класс управления пользователем:

public partial class SimpleMenu : MyUsrControlBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
          AlloweRoles = "RoleA, RoleB"
          //specific user control functionality
        }
    }

Базовый класс:

 public abstract class MyUsrControlBase : UserControl
    {
        private string _allowedRoles;

        protected internal string AllowedRoles
        {
            set
            {
                _allowedRoles = value;
                ValidateRoles();
            }
        }

        private ValidateRoles()
        {
            //Role validation logic

            if (RoleHasAccess)
               {
               // Set user control visibility to true        
               }
           else
               {
               // Set user control visibility to false        
               }
        }
    }

Как настроить видимость пользовательского элемента управления из базового класса в зависимости от результата проверки?

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

AlloweRoles = "RoleA, RoleB"

1 Ответ

1 голос
/ 11 марта 2011

Вы можете установить унаследованное свойство Visible из базового класса:

private void ValidateRoles()
{
    // Role validation logic.

    Visible = RoleHasAccess;
}

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

public partial class SimpleMenu : MyUserControlBase
{
    public SimpleMenu()
    {
        AllowedRoles = "RoleA, RoleB";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...