我想在会话到期前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);
}
}
完成所需要的最佳方式是什么?