Asp.net 中mvc 实现超时弹窗后跳转功能
为了实现保持登录状态,可以用cookie来解决这一问题
假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写
publicclassPowerFilter:AuthorizeAttribute { publicoverridevoidOnAuthorization(AuthorizationContextfilterContext) { varcookie=HttpContext.Current.Request.Cookies["loginInfo"]; if(null==cookie) { filterContext.Result=newRedirectResult("/admin/login/index"); } else { cookie.Expires=DateTime.Now.AddMinutes(30); HttpContext.Current.Response.Cookies.Remove("loginInfo"); HttpContext.Current.Response.Cookies.Add(cookie); } } }
但是页面直接跳转了,也没有一个提示,显得不是很友好,可以这样
publicclassPowerFilter:AuthorizeAttribute { publicoverridevoidOnAuthorization(AuthorizationContextfilterContext) { varcookie=HttpContext.Current.Request.Cookies["loginInfo"]; if(null==cookie) { filterContext.Result=newContentResult() { Content=string .Format("<script>alert('登录超时,请重新登录');location.href='{0}'</script>","/admin/login/index") }; } else { cookie.Expires=DateTime.Now.AddMinutes(30); HttpContext.Current.Response.Cookies.Remove("loginInfo"); HttpContext.Current.Response.Cookies.Add(cookie); } } } }
但是,假如是ajax请求呢?
publicclassPowerFilter:AuthorizeAttribute { publicoverridevoidOnAuthorization(AuthorizationContextfilterContext) { varcookie=HttpContext.Current.Request.Cookies["loginInfo"]; if(null==cookie) { if(!filterContext.HttpContext.Request.IsAjaxRequest()) { filterContext.Result=newContentResult() { Content=string .Format("<script>alert('登录超时,请重新登录');location.href='{0}'</script>","/admin/login/index") }; } else { filterContext.Result=newJsonResult() { Data=new{logoff=true,logurl="/admin/login/index"}, ContentType=null, ContentEncoding=null, JsonRequestBehavior=JsonRequestBehavior.AllowGet }; } } else { cookie.Expires=DateTime.Now.AddMinutes(30); HttpContext.Current.Response.Cookies.Remove("loginInfo"); HttpContext.Current.Response.Cookies.Add(cookie); } } }
以上所述是小编给大家介绍的Asp.net中mvc实现超时弹窗后跳转功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!