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 在應用程式組態中 過期。