如何:使用客户端应用程序服务访问用户角色

更新:2007 年 11 月

可以使用客户端应用程序服务从现有的 ASP.NET AJAX 角色服务中检索角色信息。有关如何设置角色服务的信息,请参见通过 ASP.NET AJAX 使用角色信息

以下过程演示如何在配置为使用角色服务的 Windows 窗体应用程序中访问已经过身份验证的用户的用户角色信息。有关更多信息,请参见如何:配置客户端应用程序服务。此过程要求访问正在运行的 ASP.NET AJAX 角色服务。有关在客户端应用程序服务功能的端到端测试的指南,请参见演练:使用客户端应用程序服务

确定用户是否属于某个特定的角色

  • 调用从 static Thread.CurrentPrincipal 属性中检索的 IPrincipal 引用的 IsInRole 方法。此方法返回 Boolean 值,您可以使用该值提供对特殊功能的访问,如下面的示例所示。如果用户未通过身份验证或者不属于指定的角色,则此方法返回 false。

    IsInRole 方法通过 ClientRoleProvider 类在内部访问远程角色服务。虽然可以直接访问 ClientRoleProvider 类,但通常会间接访问,如下面的代码所示。有关更多信息,请参见客户端应用程序服务概述

    下面的示例代码假定应用程序包含一个名为 managerOnlyButton 的 Button

    If System.Threading.Thread.CurrentPrincipal.IsInRole("manager") Then
    
        managerOnlyButton.Visible = True
    
    End If
    
    if (System.Threading.Thread.CurrentPrincipal.IsInRole("manager"))
    {
        managerOnlyButton.Visible = true;
    }
    

可靠编程

本主题中的示例代码演示 Windows 客户端应用程序中的角色服务的最简单用法。当通过客户端应用程序服务访问用户角色时,如果服务不可用,则代码会引发 WebException。有关在此情况下如何处理 WebException 的示例,请参见演练:使用客户端应用程序服务

此外,如果用户登录已过期,则 IsInRole 方法将总是返回 false。如果应用程序在身份验证之后不久调用过一次 IsInRole 方法,将不会发生这种情况。如果应用程序必须在其他时间检索用户角色,则您可能需要添加代码来重新验证登录已过期的用户。如果所有有效用户均指定了角色,则可以通过调用 ClientRoleProvider.GetRolesForUser 方法来确定登录是否已过期。如果未返回任何角色,则说明登录已过期。有关此功能的示例,请参见 GetRolesForUser 方法。只有在应用程序配置中选定“每次服务器 Cookie 到期时要求用户重新登录”之后,此功能才是必需的。有关更多信息,请参见如何:配置客户端应用程序服务

请参见

任务

如何:配置客户端应用程序服务

演练:使用客户端应用程序服务

概念

客户端应用程序服务概述

通过 ASP.NET AJAX 使用角色信息

参考

ClientRoleProvider

Thread.CurrentPrincipal

IPrincipal.IsInRole

其他资源

客户端应用程序服务