使用AJAX会话过期后,页面未重定向到登录页面

时间:2018-06-26 12:22:06

标签: ajax session redirect model-view-controller

在我的MVC项目中,大多数对服务器的调用都是使用Ajax完成的。它可以正常工作,直到会话过期。一旦会话过期,我添加了自定义属性以将页面重定向到登录页面。但是当调用来自AJAX时,它不会重定向到登录页面。

关于这一点,我经历了很多讨论,这些讨论基本上建议使用OnActionExecuted类的ActionFilterAttribute方法,但是这样做的时候,我只会得到HttpActionExecutedContext类型而不是{ {1}}。

这是我的代码:

ActionExecutingContext

谢谢。

2 个答案:

答案 0 :(得分:0)

Ajax函数主要用于获取数据或发布数据。如果您尝试使用ajax请求机制重定向到任何页面,那么您将走错方向。

答案 1 :(得分:0)

创建一个用于处理会话到期的自定义操作过滤器,如果session为null,则重定向到“登录操作”。

namespace Mayur.Web.Attributes
{
public class SessionTimeoutAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext ctx = HttpContext.Current;
        if (HttpContext.Current.Session["ID"] == null)
        {
            filterContext.Result = new RedirectResult("~/Home/Login");
            return;
        }
        base.OnActionExecuting(filterContext);
    }
}

}