2010-07-07 3 views
0

J'essaie d'ajouter au système d'authentification fourni dans le modèle de gestion Silverlight 4 car mon modèle ne correspond pas complètement à celui fourni dans le modèle. J'ai un service Web existant qui effectue mon authentification et fournit des rôles ainsi que des opérations autorisées pour chaque rôle. C'est le modèle fourni par AzMan/Authentication Manager. Cependant, plutôt que d'avoir un seul rôle, après l'authentification, je fournis à l'utilisateur une liste des rôles disponibles et permet à l'utilisateur de sélectionner l'un de ces rôles, puis d'obtenir une liste des opérations/actions pour ce rôle sélectionné. Le problème que j'ai, c'est que je ne peux pas travailler sur la façon d'ajouter de nouvelles méthodes au service d'authentification pour me permettre d'obtenir les opérations pour l'utilisateur actuel, et le rôle actuellement sélectionné pour terminer le processus de connexion, par exemple.Silveright - extension de AuthenticationService pour fournir une authentification personnalisée

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; 
    } 

La méthode ci-dessus n'est pas accessible depuis les LoginForm.xaml.cs en utilisant WebContextBase.Current.Authentication ... Seules des méthodes telles que connexion sont visibles qui est encore plus déconcertant parce que je ne vois pas ces méthodes authenticationbase. Je suis complètement confus. Comment puis-je ajouter de nouvelles méthodes au service d'authentification ou dois-je créer un nouveau service de domaine ou dois-je accéder au service Azman pour obtenir les opérations directement à partir du client Silverlight?

Répondre

1

Avez-vous essayé de remplacer les méthodes dans AuthenticationBase?

Ensuite, vous pouvez développer votre service d'authentification avec la logique que vous voulez.

<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 

a également établi

WebContext.Current.Authentication Pour votre AuthenticationService que l'on trouve dans l'espace de noms System.ServiceModel.DomainServices.Client.ApplicationServices

Désolé pour le code VB stupide. : D

+0

Oui J'étend la base d'authentification et la méthode GetOperations fait partie de la classe étendue - pourquoi ne puis-je pas la voir? – Calanus

+0

Avez-vous défini WebContext.Current.Authentication sur votre service d'authentification? Si vous utilisez UnityContainer. Container.RegisterInstance (de AuthenticationService) (WebContext.Current.Authentication) – Einarsson

+0

Et nous accéder à la méthode de connexion par nouvelle AuthenticationService() Login() de sorte que vous devriez être en mesure d'accéder à vos méthodes façon. Pas via WebContext.Current. – Einarsson

Questions connexes