ajax - 使用 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);
}
}
提前致谢。
解决方案
创建一个处理会话过期的自定义操作过滤器,如果会话为空,则重定向到登录操作。
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);
}
}
}
推荐阅读
- python - JIRA访问使用REST API解压数据报错
- sql - SQL 查询:是否可以在单个查询中投影四个结果?
- algorithm - 随机穿越矩阵
- php - 是否有在网络服务器上流式传输我的 PiCamera 的功能
- c++ - 从左值到右值引用的隐式转换何时发生?
- gcc - Linux 的 Windows 子系统是否足以使用 bitbake、gcc、cmake 等构建任务?
- symfony - 如何正确更新包含图像路径的实体?
- c# - 如何从 psexec 进程流式传输远程输出
- c# - 从 C# 应用程序运行 .py 时出现空白控制台输出
- python - 尽管使用 pd 和 geopy 迭代槽行,但在 pd 数据框中打印相同的坐标