为了实现保持登录状态,可以用cookie来解决这一问题
假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写
public class PowerFilter : AuthorizeAttribute{public override void OnAuthorization(AuthorizationContext filterContext){var cookie = HttpContext.Current.Request.Cookies["loginInfo"];if(null == cookie){filterContext.Result = new RedirectResult("/admin/login/index");}else{cookie.Expires = DateTime.Now.AddMinutes(30);HttpContext.Current.Response.Cookies.Remove("loginInfo");HttpContext.Current.Response.Cookies.Add(cookie);}}}但是页面直接跳转了,也没有一个提示,显得不是很友好,可以这样
public class PowerFilter : AuthorizeAttribute{public override void OnAuthorization(AuthorizationContext filterContext){var cookie = HttpContext.Current.Request.Cookies["loginInfo"];if(null == cookie){filterContext.Result = new ContentResult(){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请求呢?
public class PowerFilter : AuthorizeAttribute{public override void OnAuthorization(AuthorizationContext filterContext){var cookie = HttpContext.Current.Request.Cookies["loginInfo"];if(null == cookie){if(!filterContext.HttpContext.Request.IsAjaxRequest()){filterContext.Result = new ContentResult(){Content = string .Format("<script>alert("登录超时,请重新登录");location.href="{0}"</script>","/admin/login/index")};}else{filterContext.Result = new JsonResult(){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 实现超时弹窗后跳转功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!