2010-07-07 49 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

相关问题