2010-07-07 80 views
0

我想添加到Silverlight 4業務模板中提供的身份驗證系統,因爲我的模型不完全適合模板中提供的身份驗證系統。我有一個現有的Web服務來執行我的身份驗證,併爲每個角色提供角色並允許執行操作。這是由AzMan/Authentication Manager提供的模型。Silveright - 擴展AuthenticationService以提供自定義身份驗證

但是,在進行身份驗證之後,我不僅提供了一個角色,還爲用戶提供了可用角色列表,並允許用戶選擇其中一個角色,然後獲取該選定角色的操作/操作列表。

我的問題是,我無法弄清楚如何向認證服務添加新方法,以允許我獲得當前用戶的操作以及當前選定的角色以完成登錄過程,例如

public SessionInfo GetOperations(string username, string selectedRole) 
    { 
     SessionInfo sessionInfo; 

     using (AzManServiceClient azClient = new AzManServiceClient("AnonymousAuthentication")) 
     { 
      sessionInfo = azClient.LoginUserByUsername("msldap://CN=LiveApps,CN=Program Data,DC=HLSUK,DC=local", "AIRS", selectedRole, null, username); 
     } 

     return sessionInfo; 
    } 

上述方法是不使用WebContextBase.Current.Authentication的LoginForm.xaml.cs訪問......只有如登錄方法是可見的,因爲我不能看到這些方法是更加令人困惑authenticationbase。我完全困惑。如何將新方法添加到身份驗證服務,或者我應該創建新的域服務,還是應該訪問azman服務以直接從Silverlight客戶端獲取操作?

回答

1

您是否嘗試過重寫AuthenticationBase中的方法?

然後,你可以用你想要的任何邏輯擴展你的認證服務。

<EnableClientAccess()> 
     Public Class AuthenticationRiaService 
      Inherits AuthenticationBase(Of UserAccount) 

      Protected Overrides Function ValidateUser(ByVal userName As String, ByVal password As String) As Boolean 
      End Function 
    End Class 

還設置

WebContext.Current.Authentication爲了您的AuthenticationService在命名空間System.ServiceModel.DomainServices.Client.ApplicationServices

對不起,愚蠢的VB代碼中發現的。 :D

+0

是的我正在擴展身份驗證基礎和GetOperations方法是擴展類的一部分 - 爲什麼我不能看到它? – Calanus 2010-07-07 13:04:34

+0

您是否將WebContext.Current.Authentication設置爲您的身份驗證服務? 如果使用Unitycontainer: Container.RegisterInstance(中的AuthenticationService)(WebContext.Current.Authentication) – Einarsson 2010-07-07 14:02:58

+0

我們訪問過 新的AuthenticationService()的登錄方法登錄(),所以你應該能夠訪問你的方法是辦法。不通過WebContext.Current。 – Einarsson 2010-07-07 14:04:06

相關問題