2009-05-18 12 views
6

J'essaie de comprendre comment implémenter une connexion AJAX pour un site ASP.NET 2.0 avec Jquery. J'ai déjà mis en œuvre une autre application Jquery AJAX simple sur le site, mais je ne sais pas comment convertir sur le contrôle de connexion standard à POST via AJAX. Dois-je exposer les méthodes de la page login.aspx? Toute aide est la bienvenue.ASP.NET 2.0 JQuery AJAX Connexion

Répondre

8

Voici quelques idées sur la façon dont cela peut être implémenté. Ce code n'est pas complet, mais il devrait suffire de vous lancer sur la bonne voie.

Vous devez créer vos propres champs de formulaire de connexion pour le nom d'utilisateur/mot de passe.

Créer un ASMX ou WCF WebService pour l'authentification avec une méthode similaire à ceci:

[WebMethod] 
public string AuthenticateUser(string username, string password) 
{ 
    string result = "Invalid Username or Password"; 
    if(Membership.ValidateUser(userName, password)) 
    { 
     FormsAuthentication.SetAuthCookie(u.UserName, false); 
     result = "successful"; 
    } 
    return result; 
} 

Puis de l'événement click de bouton de connexion, vous pouvez utiliser jQuery ajax pour afficher le nom d'utilisateur/mot de passe pour le webservice:

$.ajax({ 
    type: "POST", 
    url: "WebService.asmx/AuthenticateUser", 
    data: "{username:"+$('#txtUsername').val()+",password:"+$('#txtPassword').val()+"}", 
    success: function(result) { 
    alert(result); 
    //if(result=='successful') 
    // redirectUser to the home page 
    } 
}); 
+0

Sweet. Cela aide beaucoup. Voici une autre question. Est-il possible de stocker des informations en session à partir du service Web? – GreenEggs

+1

Oui, il suffit d'activer la session dans l'attribut WebMethod. [WebMethod (EnableSession = true)] et la session de votre HTTPContext sera disponible. –

+0

Génial! Cela aide une tonne !!! Merci! – GreenEggs

1

Avec cette solution, il y a un gros problème de sécurité: le nom d'utilisateur et le mot de passe seront envoyés au format texte. Vous devez donc utiliser SSL ou hacher ces données d'une manière ou d'une autre. take a look here