Используя WindowsTokenRoleProvider, вы должны сконфигурировать свое приложение для применения Windows-аутентификации, а затем сконфигурировать сам WindowsTokenRoleProvider, как показано ниже:

<configuration xmlns="htrp://scnemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>
    <authentication mode="Windows"/>
    <authorization>
      <deny users="?" />
    </authorization>
    <roleМanager enabled="true"
       cacheRolesInCookie="false"
       defaultProvider="WindowsRoles">
      <providers>
        <add name="WindowsRoles"
type="System.Web.Security.WindowsTokenRoleProvider" />
      </providers>
    </roleManager>
  </system.web>
</configuration>

При такой конфигурации пользователь аутентифицируется Windows.

RoleManagerModule автоматически создает экземпляр RolePrincipal и ассоциирует его со свойством HttpContext.Current.User. Таким образом, вы можете использовать RolePrincipal, как показано ниже — в отношении использования нет никакой разницы с применением других поставщиков Roles:

protected void Page_Load(object sender, EventArgs e)
{
  if ((User != null) && (User.Identity.IsAuthenticated))
  {
    RolePrincipal rp = (RolePrincipal)User;
    StringBuilder Info = new StringBuilder();
    Info.AppendFormat("<h2>Welcome {O} !</h2>", User.Identity.Name);
    Info.AppendFormat("<b>Provider: </b>{0}<br>", rp.ProviderName);
    Info.AppendFormat("<b>Version: </b>{0}<br>", rp.Version);
    Info.AppendFormat("<b>Expiration: </b>{0}<br>", rp.ExpireDate);
    Info.AppendFormat("<b>Roles: </b><br>");
    string[] Roles = rp.GetRoles();
    foreach (string role in Roles)
    {
      if (!role.Equals(string.Empty))
        Info.AppendFormat("-) {0}<br>", role);
    }
    LabelPrincipalInfo.Text = Info.ToString();
}

Результат работы этого кода показан на рис. 23.6.

Архитектура на основе поставщиков позволяет использовать Windbws-ayтентифмкацию с группами пользователей Windows без какого-либо изменения внутренней логики вашего приложения. Все работает точно так же, как и с SqlRoleProvider. To же самое касается и Membership API, представленного в главе 21. Когда конфигурируется другой поставщик, вам не нужно изменять код; однако вам нужно выполнить некоторые программные проверки авторизации с жестко закодированными именами ролей, поскольку группы

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

947

Hosted by uCoz