共用方式為


HOW TO:使用用戶端應用程式服務存取使用者角色

您可以使用用戶端應用程式服務,從現有 Microsoft AJAX 角色服務擷取角色資訊。 如需如何設定角色服務的詳細資訊,請參閱搭配 Microsoft Ajax 使用角色資訊

下列程序示範如何在設定為使用角色服務的 Windows Form 應用程式中,存取已驗證之使用者的使用者角色資訊。 如需詳細資訊,請參閱 HOW TO:設定用戶端應用程式服務。 這個程序需要存取執行中的 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 過期時必須再次登入] 的情況下才需要這項功能。 如需詳細資訊,請參閱 HOW TO:設定用戶端應用程式服務

請參閱

工作

HOW TO:設定用戶端應用程式服務

逐步解說:使用用戶端應用程式服務

參考

ClientRoleProvider

Thread.CurrentPrincipal

IPrincipal.IsInRole

概念

用戶端應用程式服務概觀

搭配 Microsoft Ajax 使用角色資訊

其他資源

用戶端應用程式服務