2009-01-30 16 views
24

¿Es posible utilizar una llamada jQuery ajax para realizar la Autenticación de formularios con ASP.NET MVC? No he podido encontrar ninguno de esos ejemplos.Autenticación jQuery Forms con ASP.NET MVC

Más específicamente, ¿cómo configuro la cookie de autenticación en la página (sin una redirección) para que pueda realizar sucesivas solicitudes de ajax autenticadas?

Respuesta

18

Sí, es posible. Solo envíe el formulario de inicio de sesión utilizando el método described here by mike bosch y devuelva una estructura de datos json con returnUrl, si corresponde.

He creado una clase LoginResultDTO ligero que vuelvo como JSON:

public class LoginResultDTO 
{ 
    public bool Success {get;set;} 
    public string Message {get;set;} 
    public string ReturnUrl {get;set;} 
} 

Aquí es un bloque de script desde mi punto de vista de la conexión:

<script type="text/javascript"> 
     $(document).ready(function() { 
      var form = $($("form")[0]); 
      form.submit(function() { 
       var data = form.serialize(); 
       $.post(form.attr("action"), data, function(result, status) { 
        if (result.Success && result.ReturnUrl) { 
          location.href = result.ReturnUrl; 
        } else { 
         alert(result.Message); 
        } 
       }, "json"); 
       return false; 
      }); 
     }); 
</script> 

Esto le ajax envolver el formulario de inicio de sesión. Tenga en cuenta que esta es la implementación más simple del código de JavaScript posible, pero es un buen lugar para comenzar.

entonces he modificado mi acción de conexión en los AccountController y en los lugares pertinentes poner algo como esto:

if(Request.IsAjaxRequest()) 
{ 
    return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"}); 
}else 
{ 
    return View(); 
} 

Así que este es un ultraligero pero la versión más completa de cómo la autenticación de jQuery que se podría hacer en ASP. mvc neto

+0

Si no estoy haciendo una redirección, ¿cómo se establecería la cookie de autenticación en esa página? –

+0

Las cosas están bien cuando esa publicación de Ajax vuelve con un resultado exitoso. Pero casi siempre se redirigirá después de un inicio de sesión exitoso. En el escenario de Ajax, asignando la url a la propiedad 'location.href' en javascript. –

+0

Acabo de disparar firebug para ver qué está pasando. Cuando pulsa la acción LogOn con ajax y su inicio de sesión es exitoso, hay una entrada set-cookie en el encabezado de respuesta con la cookie auth. Es por eso que funciona. –

0

Tome un vistazo a xVal. Puede usar cualquier biblioteca de validación del lado del cliente, pero usa jQuery Valiation de forma predeterminada.

Cuestiones relacionadas