提示用户关于会话超时并延长会话

时间:2016-07-18 12:53:50

标签: c# asp.net-mvc-4 session iis

我想在会话到期前1分钟提示用户,并在用户点击“确定”时将其扩展。 目前,我编写了一个ActionFilter来检查SessionTimeout,并在会话超时的情况下重定向到一个视图。然后我使用CheckSessionTimeOut属性装饰我的控制器。

public class CheckSessionTimeOutAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
        {
            var context = filterContext.HttpContext;
            if (context.Session != null)
            {
                if (context.Session.IsNewSession)
                {
                    string sessionCookie = context.Request.Headers["Cookie"];
                    if ((sessionCookie != null) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0))
                    //if (true)
                    {
                        FormsAuthentication.SignOut();
                        var c = new HttpCookie("Cookie");
                        c.Expires = DateTime.Now.AddDays(-1);
                        context.Response.Cookies.Add(c);
                        string redirectTo = "~/BundleDealer/SessionExpire";
                        context.Response.Redirect(redirectTo, true);


                    }
                }
            }
            base.OnActionExecuting(filterContext);
        }
    }

完成所需要的最佳方式是什么?

0 个答案:

没有答案