24

是否可以使用 jQuery ajax 调用通过 ASP.NET MVC 执行表单身份验证?我一直找不到任何这样的例子。

更具体地说,如何在页面上设置 auth cookie(没有重定向),以便我可以发出连续的经过身份验证的 ajax 请求?

4

2 回答 2

18

是的,这是可能的。只需使用mike bosch 在此处描述的方法提交登录表单,并返回带有 returnUrl 的 json 数据结构(如果有)。

我创建了一个轻量级的 LoginResultDTO 类,我以 json 的形式返回:

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

这是我的登录视图中的一个脚本块:

<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>

这将 ajax 包装登录表单。请注意,这是可能的 javascript 代码的最简单实现,但它是一个开始的地方。

然后我在 AccountController 中修改了我的 LogOn 操作,并在相关位置放置了如下内容:

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

所以这是一个超轻量但相当完整的 jquery 身份验证如何在 asp.net mvc 中完成的版本。

于 2009-01-30T14:25:21.600 回答
0

看看xVal。它可以使用任何客户端验证库,但默认使用jQuery验证。

于 2009-01-30T16:52:26.747 回答