如何在ASP.net中通过mvc实现超时弹窗后跳转功能?

如何在ASP.net中通过mvc实现超时弹窗后跳转功能?

为了实现保持登录状态,可以用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 实现超时弹窗后跳转功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对路饭网站的支持!