Когда включена служба Roles, RoleManagerModule автоматически создает экземпляр RolePrincipal, содержащий как личность аутентифицированного пользователя, так и его роли. RolePrincipal — это просто специальная реализация IPrincipal, базового интерфейса для всех классов принципалов. Поэтому он поддерживает функциональность по умолчанию, такую как доступ к аутентифицированной личности и метод для верификации условий членства в ролях через метод IsInRole(). Более того, он включает несколько дополнительных свойств для доступа к более подробной информации о принципале. Вы можете, использовать их в следующем коде для извлечения информации из экземпляра наряду с проверками авторизации, вызывая метод IsInRole():

protected void Page_Load(object sender, EventArgs e)
{
  if (User.Identity.IsAuthenticated)
  {
    RolePrincipal rp = (RolePrincipal)User;

    StringBuilder RoleInfo = new StringBuilder();
    RoleInfo.AppendFormat("<h2>Welcome {0}</h2>", rp.Identity.Name);
    RoleInfo.AppendFormat("<b>Provider:</b> {0}<BR>", rp.ProviderName);
    RoleInfo.AppendFormat("<b>Version:</b> {0}<BR>", rp.Version);
    RoleInfo.AppendFormat("<b>Expires at:</b> {0}<BR>", rp.ExpireDate);
    RoleInfo.Append("<b>Roles:</b> ");

    string[] roles = rp.GetRoles();

    for (int i = 0; i < roles.Length; i++)
    {
      if (i > 0) RoleInfo.Append(", ");
      RoleInfo.Append(roles[i]);
    }
    LabelRoleInformation.Text = RoleInfo.ToString();
  }
}

Использование элемента управления LoginView с Roles

В предыдущей главе вы подробно познакомились с работой элементов управления безопасностью, поставляемых с ASP.NET. Одним из них был элемент LoginView. В главе 21 он применялся для отображения различных элементов управления для анонимных и зарегистрированных пользователей. Этот элемент управления использует шаблоны для реализации своей функциональности. В главе 21 использовались шаблоны <LoggedInTemplate> и <AnonymousTemplate>.

Элемент LoginView поддерживает один дополнительный элемент, позволяющий вам строить различные виды на основе ролей, к которым принадлежит пользователь. Для этой цели потребуется добавить дескриптор RoleGroup с элементами управления <asp:RoleGroup>. С каждым элементом <аsр:RoleGroup> в свойстве Roles вы специфицируете разделенный запятыми список ролей, для которых будет отображаться соответствующий <ContentTemplate>, как показано ниже:

<asp:LoginView runat="server" ID="MainView">
  <LoggedInTemplate>
   <h2>This is the logged in template</h2>
  </LoggedInTemplate>
  <RoleGroups>
    <asp:RoleGroup Roles="Admin">

предыдущая    следующая страница    вначало главы    оглавление

943

Hosted by uCoz