ClientRolePrincipal.IsInRole(String) 方法

定义

获取一个值,该值指示由 ClientRolePrincipal 表示的用户是否处于指定角色中。

public:
 virtual bool IsInRole(System::String ^ role);
public bool IsInRole (string role);
abstract member IsInRole : string -> bool
override this.IsInRole : string -> bool
Public Function IsInRole (role As String) As Boolean

参数

role
String

要检查的角色。

返回

如果用户处于指定角色,则 true;false 如果用户未处于指定角色或未进行身份验证。

实现

示例

以下示例代码演示如何仅在用户处于“经理”角色时使用此方法来显示按钮。 此示例需要一个名为 managerOnlyButtonButton,其初始 Visible 属性值为 false

private void DisplayButtonForManagerRole()
{
    try
    {
        ClientRolePrincipal rolePrincipal =
            System.Threading.Thread.CurrentPrincipal 
            as ClientRolePrincipal;

        if (rolePrincipal != null && rolePrincipal.IsInRole("manager"))
        {
            managerOnlyButton.Visible = true;
        }
    }
    catch (System.Net.WebException)
    {
        MessageBox.Show("Unable to access the roles service.",
            "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
}
Private Sub DisplayButtonForManagerRole()

    Try

        Dim rolePrincipal As ClientRolePrincipal = TryCast( _
            System.Threading.Thread.CurrentPrincipal, ClientRolePrincipal)

        If rolePrincipal IsNot Nothing And _
            rolePrincipal.IsInRole("manager") Then

            managerOnlyButton.Visible = True

        End If

    Catch ex As System.Net.WebException

        MessageBox.Show("Unable to access the role service.", _
            "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)

    End Try

End Sub

注解

通常,你将调用 staticThread.CurrentPrincipal 属性返回的 IPrincipalIsInRole 方法。 但是,可以将 CurrentPrincipal 属性值强制转换为 ClientRolePrincipal 引用,以显式调用此方法,如“示例”部分所示。

如果用户登录名已过期,IsInRole 方法将始终返回 false。 如果应用程序在身份验证后不久调用 IsInRole 方法,则不会发生这种情况。 如果应用程序在其他时间必须检索用户角色,则可能需要添加代码以重新验证登录名已过期的用户。 如果所有有效的用户都分配到角色,可以通过调用 ClientRoleProvider.GetRolesForUser 方法来确定登录名是否已过期。 如果未返回任何角色,则登录名已过期。 有关此功能的示例,请参阅 GetRolesForUser 方法。 仅当服务器 Cookie 在应用程序配置中 过期时,才需要选择此选项 要求用户再次登录。

适用于

另请参阅