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

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

以下过程演示如何在配置为使用角色服务的 Windows 窗体应用程序中访问已经过身份验证的用户的用户角色信息。 有关更多信息,请参见如何:配置客户端应用程序服务。 此过程要求访问正在运行的 Microsoft 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 到期时要求用户重新登录”**之后,此功能才是必需的。 有关更多信息,请参见如何:配置客户端应用程序服务

请参见

任务

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

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

参考

ClientRoleProvider

Thread.CurrentPrincipal

IPrincipal.IsInRole

概念

客户端应用程序服务概述

通过 Microsoft Ajax 使用角色信息

其他资源

客户端应用程序服务