我遇到了频繁的 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/

10-13 06:57