当前位置: 移动技术网 > IT编程>开发语言>.net > Asp.net 中mvc 实现超时弹窗后跳转功能

Asp.net 中mvc 实现超时弹窗后跳转功能

2017年12月08日  | 移动技术网IT编程  | 我要评论

张庭宾搜狐博客,周建华给强卫同志的信,变形金刚之战无敌版

为了实现保持登录状态,可以用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 实现超时弹窗后跳转功能,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网