能否使用 jQuery ajax 调用在 ASP.NET MVC 中进行表单身份验证?我找不到这样的示例。
更具体地说,我如何在页面上设置身份验证 cookie(而无需重定向),以便可以进行连续的经过身份验证的 ajax 请求?
能否使用 jQuery ajax 调用在 ASP.NET MVC 中进行表单身份验证?我找不到这样的示例。
更具体地说,我如何在页面上设置身份验证 cookie(而无需重定向),以便可以进行连续的经过身份验证的 ajax 请求?
是的,这是可能的。 只需使用Mike Bosch在此处描述的方法提交登录表单,并返回一个包含任何返回URL的JSON数据结构。
我创建了一个轻量级的LoginResultDTO类,作为JSON返回:
public class LoginResultDTO
{
public bool Success {get;set;}
public string Message {get;set;}
public string ReturnUrl {get;set;}
}
这是我 LogOn 视图中的脚本块:
<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中实现的示例。
location.href
属性来实现重定向。 - Christian Dalager