共用方式為


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

更新:2007 年 11 月

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

下列程序示範如何在設定為使用角色服務的 Windows Form 應用程式中,存取已驗證之使用者的使用者角色資訊。如需詳細資訊,請參閱 HOW TO:設定用戶端應用程式服務。這個程序需要存取執行中的 ASP.NET 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:設定用戶端應用程式服務

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

概念

用戶端應用程式服務概觀

搭配 ASP.NET AJAX 使用角色資訊

參考

ClientRoleProvider

Thread.CurrentPrincipal

IPrincipal.IsInRole

其他資源

用戶端應用程式服務