在我的MVC项目中,大多数对服务器的调用都是使用Ajax完成的。它可以正常工作,直到会话过期。一旦会话过期,我添加了自定义属性以将页面重定向到登录页面。但是当调用来自AJAX时,它不会重定向到登录页面。
关于这一点,我经历了很多讨论,这些讨论基本上建议使用OnActionExecuted
类的ActionFilterAttribute
方法,但是这样做的时候,我只会得到HttpActionExecutedContext
类型而不是{ {1}}。
这是我的代码:
ActionExecutingContext
谢谢。
答案 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);
}
}
}