2009-05-18 21 views
6

Estoy tratando de averiguar cómo implementar un inicio de sesión AJAX para un sitio ASP.NET 2.0 con Jquery. Ya he implementado otra aplicación Jquery AJAX simple en el sitio, pero no estoy seguro de cómo convertir el control de inicio de sesión estándar a POST a través de AJAX. ¿Debería exponer los métodos de la página login.aspx? Cualquier ayuda sería genial.ASP.NET 2.0 JQuery AJAX Iniciar sesión

Respuesta

8

Aquí hay algunas ideas sobre cómo esto puede implementarse. Esto no es un código completo, pero debería ser suficiente para que comiences por el camino correcto.

Debe crear sus propios campos de formulario de inicio de sesión para nombre de usuario/contraseña.

Crear una ASMX o servicio Web WCF para la autenticación con un método similar a este:

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

Luego de evento de clic de su botón de inicio de sesión puede utilizar jQuery Ajax para publicar el nombre de usuario/contraseña para el servicio web:

$.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. Eso ayuda mucho. Aquí hay otra pregunta. ¿Hay alguna forma de almacenar información en sesión desde el servicio web? – GreenEggs

+1

Sí, solo habilite la sesión en el atributo WebMethod. [WebMethod (EnableSession = true)] y la sesión de HTTPContext estará disponible. –

+0

¡Impresionante! ¡Eso ayuda mucho! ¡Gracias! – GreenEggs

1

Con esta solución hay un gran problema de seguridad que el nombre de usuario y la contraseña se enviarán en formato de texto plano. entonces debería usar SSL o hash estos datos de alguna manera. take a look here

Cuestiones relacionadas