Используя 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