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:設定用戶端應用程式服務。