2

Ich arbeite an der Integration einer Silverlight-Site in unsere bestehende Anwendung und versuche, die Login-Funktionalität zum Laufen zu bringen. Die Silverlight-Anwendung muss über eine eigene Anmeldeseite verfügen, und die Anmeldung muss die vorhandene ASP.NET-Formularauthentifizierung verwenden. Als Teil der Anmeldeprozedur rufen wir externen Code auf. Daher ist die Verwendung der skriptfähigen Methoden, die System.Web.ApplicationServices.AuthenticationService verfügbar macht, keine Option. Ich habe versucht, FormsAuthentication.Authenticate dafür zu verwenden, aber es hat nicht funktioniert. Hat jemand irgendwelche Ideen, wie man das umgehen kann?Wie kann ich Benutzer in einem benutzerdefinierten Webservice authentifizieren?

+0

Wo genau ist der Webservice in diesem? –

+0

Das sieht sehr ähnlich wie ein Duplikat von: http://stackoverflow.com/questions/890310/silverlight-asp-net-wcf-authentication-2-0 –

+0

Das Problem ist ähnlich, aber ich kann diese Lösungen nicht verwenden, weil Ich muss einen externen Anruf tätigen, bevor ich mich anmelden kann. –

Antwort

2

Es klingt, als müssten Sie einen Wrapper-Webservice erstellen, der die Unterstützung der Formularauthentifizierung implementieren kann.

Dies ist etwas, was ich getan habe, so zum Beispiel ich einen WCF-Dienst mit der folgenden Schnittstelle erstellt haben, die von meinem Silverlight-Client verwiesen wird:

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

und dann in meiner Implementierung können Sie benutzerdefinierte Code aufrufen und auch die Formularauthentifizierung api verwenden, zum Beispiel um sich einzuloggen könnten Sie haben:

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

auch nicht, dass Sie das folgende Attribut über Ihnen Klassendefinition in Ihrer Service-Implementierung enthalten müssen asp.net compat haben ermöglicht, die geben du erreichst s zum HttpContext:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
Verwandte Themen