24 .net asp.net-mvc jquery forms-authentication
是否可以使用jQuery ajax调用来执行ASP.NET MVC的表单身份验证?我一直都找不到这样的例子.
更具体地说,如何在页面上设置auth cookie(没有重定向),以便我可以进行连续的经过身份验证的ajax请求?
Chr*_*ger 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;}
}
Run Code Online (Sandbox Code Playgroud)
这是我的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>
Run Code Online (Sandbox Code Playgroud)
这将是ajax包装登录表单.请注意,这是javascript代码最简单的实现,但它是一个开始的地方.
然后我在AccountController中修改了我的LogOn动作,在相关的地方放了这样的东西:
if(Request.IsAjaxRequest())
{
return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"});
}else
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
所以这是一个超级但相当完整的版本,可以在asp.net mvc中完成jquery身份验证.