词条信息

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

相关词条

热门词条

更多>>
面试官是怎么快速判断程序员能力的?
技术面试是一个工程师成长到一定阶段后必然要承担的一项工作,优秀的技术面试官能帮助公司筛选出优秀的工程师,并且潜...
支付宝、京东、美团、去哪儿的支付系统架构整体设计详解
十年风雨!看蚂蚁金服SOFA 分布式架构演进作者:一杯甜酒支付产品模块是按照支付场景来为业务方提供支付服务。这...
图解:直播平台整体架构
直播平台整体架构视频直播链路视频流转换成不同清晰度不同的端,不同的网络环境,需要不同码率,以保流畅播放器的基本...
CentOS 7下安装Nextcloud搭建个人网盘
本文只作测试之用,生产环境还要严格进行安全配置。[linuxidc@localhost ~]$&nb...
Excel常用函数的组合使用
Excel中的函数公式非常的强大,全部掌握很显然是不现实的,但是对常用的Excel函数公式,我们必须掌握。...
解决网 >>所属分类 >> 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. 如果您没有找到需要的百科词条,您可以到百科问答提问或创建词条,等待高手解答。

关于本词条的提问

查看全部/我要提问>>