ClientRolePrincipal.IsInRole(String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取一个值,该值指示由 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
如果用户未处于指定角色或未进行身份验证。
实现
示例
以下示例代码演示如何仅在用户处于“经理”角色时使用此方法来显示按钮。 此示例需要一个名为 managerOnlyButton
的 Button,其初始 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
注解
通常,你将调用 static
Thread.CurrentPrincipal 属性返回的 IPrincipal 的 IsInRole 方法。 但是,可以将 CurrentPrincipal 属性值强制转换为 ClientRolePrincipal 引用,以显式调用此方法,如“示例”部分所示。
如果用户登录名已过期,IsInRole 方法将始终返回 false
。 如果应用程序在身份验证后不久调用 IsInRole 方法,则不会发生这种情况。 如果应用程序在其他时间必须检索用户角色,则可能需要添加代码以重新验证登录名已过期的用户。 如果所有有效的用户都分配到角色,可以通过调用 ClientRoleProvider.GetRolesForUser 方法来确定登录名是否已过期。 如果未返回任何角色,则登录名已过期。 有关此功能的示例,请参阅 GetRolesForUser 方法。 仅当服务器 Cookie 在应用程序配置中 过期时,才需要选择此选项