词条信息

xiazaiwo
xiazaiwo
进士
词条创建者 发短消息   

相关词条

天天广告联盟
 广告位置招商  广告招商

热门词条

更多>>
ps利用通道精确抠出背景
通道抠图之前,我们需要了解一下通道的知识。RGB模式下,我们看[详细]
人民日报:守护个人数据使用的边界
你去过的酒店好友都能看到!这不是玩笑,而是真实案例。近日,有媒[详细]
摩拜实施全国免押金
  2018年07月05日,“摩拜单车宣布全国范围内无门槛免押[详细]
偷拍软件是如何植入进电脑的呢?
近日了解到一则新闻:19岁的大连女孩肖婷在外地读大学,其在女生[详细]
摩拜宣布百城无门槛免押金
  是否免押金正成为共享单车竞争的新方向。继哈罗单车之后,摩拜[详细]
解决网 >>所属分类 >> asp   

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

标签: 暂无标签

顶[0] 发表评论(0) 编辑词条

为了实现保持登录状态,可以用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);
      }
    }
  }

 

 

本文地址:解决网 http://www.solves.com.cn/doc-view-4515.html

TAGS:SOLVES , 电脑技术 , 电脑知识 , 网站建设, 电脑技术, 网络营销 , 网站托管 , 硬件技术 , 网络技术 , 软件技术, 维修网点

参考资料
[1].  Asp.net 中mvc 实现超时弹窗后跳转功能_下载我_精品源码软件教程资源网   http://www.xiazaiwo.net/tech/kaifa/net/11657.html

附件列表


按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

→我们致力于为广大网民解决所遇到的各种电脑技术问题
 如果您认为本词条还有待完善,请 编辑词条

上一篇IIS 7.5中提供的Web服务器(IIS)角色服务详请
下一篇笔记本键盘失灵问题结局

0
1. 本站部分内容来自互联网,如有任何版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
2. 本站内容仅供参考,如果您需要解决具体问题,建议您咨询相关领域专业人士。
3. 如果您没有找到需要的电脑技术问题词条,您可以到百科问答提问或创建词条,等待高手解答。

关于本词条的提问

查看全部/我要提问>>