我遇到了频繁的 session 超时问题。
我想编写一个可以在每个 Controller 上使用的通用过滤器,过滤器应该将用户重定向到登录,并在登录后返回到用户发送最后一个请求的位置。
最佳答案
你可以尝试这样的事情:
public class SessionExpireAttribute : ActionFilterAttribute {
public override void OnActionExecuted(ActionExecutedContext filterContext) {
base.OnActionExecuted(filterContext);
}
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if (filterContext.HttpContext.Session != null) {
if (filterContext.HttpContext.Session.IsNewSession) {
var sessionCookie = filterContext.HttpContext.Request.Headers["Cookie"];
if ((sessionCookie != null) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0)) {
// redirect to login
}
}
}
}
}
关于asp.net-mvc - 如何处理 MVC 3 中的 session 超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6534166/