对于ajax请求,无法通过后台的Redirect等方法重定向到指定页面,需在前台页面重定向
1.重写基类控制器OnActionExecuting方法
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.Session[SessionKeyModel.AdminUser] == null)
{
if (HttpContext.Request.IsAjaxRequest())
{
Response.AddHeader("SessionStatus", "TimeOut");
filterContext.Result = new HttpNotFoundResult(); //不再往下执行action
}
else
{
filterContext.Result = RedirectToRoute("Login");
}
}
else
{
//校验是否有action权限
base.OnActionExecuting(filterContext);
}
}
2.设置全局的ajax
$.ajaxSetup({
complete: function (xhr, status) {
var sessionStatus = xhr.getResponseHeader("SessionStatus");
if (sessionStatus === "TimeOut") {
alert("登录状态已失效,请重新登录!");
top.location = "/Login";
}
}
});