在我们的 ASP.NET MVC应用程序中,当会话超时时,页面会在我们有Jquery AJAX调用的组件上崩溃,但是如果我们手动加载页面,它会注销并重定向到登录页面。
我们希望用户在会话过期时自动重定向到登录页面,我们正在使用表单身份验证并定义了自定义主体。
在global.asax中插入以下代码
public class SessionExpireAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.Current.Session["SessionId"] == null)
{
filterContext.Result = new RedirectResult("~/Home/Login");
return;
}
base.OnActionExecuting(filterContext);
}
}
并在每个控制器中调用此属性,如下所示
[SolutionName.MvcApplication.SessionExpire]
public class HomeController : Controller
{
}