2

Je travaille sur l'intégration d'un site Silverlight dans notre application existante et j'essaie de faire fonctionner la fonctionnalité de connexion. L'application Silverlight doit posséder sa propre page de connexion et la connexion doit utiliser l'authentification de formulaires ASP.NET existante. Dans le cadre de la procédure de connexion, nous appelons du code externe, donc l'utilisation des méthodes scriptables que System.Web.ApplicationServices.AuthenticationService expose n'est pas une option. J'ai essayé d'utiliser FormsAuthentication.Authenticate pour le faire, mais cela n'a pas fonctionné. Est-ce que quelqu'un a des idées sur la façon de contourner cela?Comment les formulaires peuvent-ils authentifier un utilisateur dans un service Web personnalisé?

+0

Où est exactement le service Web dans ce domaine? –

+0

Cela ressemble beaucoup à une copie de: http://stackoverflow.com/questions/890310/silverlight-asp-net-wcf-authentication-2-0 –

+0

Le problème est similaire, mais je ne peux pas utiliser ces solutions parce que Je dois passer un appel externe avant de pouvoir me connecter. –

Répondre

2

Il semble que vous ayez besoin de créer un WebServeur wrapper qui peut implémenter le support d'authentification par formulaire.

C'est quelque chose que je l'ai fait par exemple que j'ai créé un service WCF avec l'interface suivante qui est référencé par mon client Silverlight:

[ServiceContract] 
    public interface IAuthenticationService 
    { 
     [OperationContract()] 
     string Login(string username, string password, bool isPersistent); 
     [OperationContract()] 
     bool Logout(); 
     [OperationContract()] 
     string IsLoggedIn();  
    } 

puis dans ma mise en œuvre, vous pouvez appeler le code personnalisé et également utiliser l'API d'authentification des formulaires, par exemple vous connecter, vous pourriez avoir:

try 
      { 
       //Call you external code here 
       //Then use the membership provider to authenticate 
       if (Membership.ValidateUser(username, password)) 
       { 

        FormsAuthentication.SetAuthCookie(username, isPersistent); 

       } 
      } 
      catch (Exception ex) 
      { 
       Logging.LogException("Error in Login", ex); 
      } 

aussi ne vous devez inclure l'attribut suivant ci-dessus vous définition de classe dans votre mise en œuvre de services d'avoir asp.net compat Activé qui donnera vous acces s vers le contexte Http:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
Questions connexes