首页 > 解决方案 > 使用 AJAX 会话过期后页面未重定向到登录页面

问题描述

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

我已经经历了很多关于这个的线程,基本上建议使用类OnActionExecuted的方法ActionFilterAttribute,但是这样做时我只得到 typeHttpActionExecutedContext而不是 type ActionExecutingContext

这是我的代码:

public class SessionExpired : ActionFilterAttribute
        {
            public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
            {
                //My Code to handle the session event
                base.OnActionExecuted(actionExecutedContext);
            }
        }

提前致谢。

标签: ajaxsessionredirectmodel-view-controller

解决方案


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

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);
    }
}

}


推荐阅读