当前位置: 首页 > 编程笔记 >

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

淳于宏伯
2023-03-14
本文向大家介绍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 实现超时弹窗后跳转功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍asp.net core mvc实现伪静态功能,包括了asp.net core mvc实现伪静态功能的使用技巧和注意事项,需要的朋友参考一下       在大型网站系统中,为了提高系统访问性能,往往会把一些不经常变得内容发布成静态页,比如商城的产品详情页,新闻详情页,这些信息一旦发布后,变化的频率不会很高,如果还采用动态输出的方式进行处理的话,肯定会给服务器造成很大的资源浪费。但是我

  • 本文向大家介绍Asp.NET MVC中使用SignalR实现推送功能,包括了Asp.NET MVC中使用SignalR实现推送功能的使用技巧和注意事项,需要的朋友参考一下 一、简介 Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架。它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送请求或使用轮询技术来获取消息

  • 本文向大家介绍JavaScript实现相册弹窗功能(zepto.js),包括了JavaScript实现相册弹窗功能(zepto.js)的使用技巧和注意事项,需要的朋友参考一下 先看看弹窗效果,如下:  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍ASP.NET MVC制作404跳转实例(非302和200),包括了ASP.NET MVC制作404跳转实例(非302和200)的使用技巧和注意事项,需要的朋友参考一下 产生404的原因主要有以下:     1.浏览器和爬虫:某些浏览器会请求网站的favicon.ico,而如果你的网站根目录下没有这个文件,那么浏览器会有一条404的log,同样搜索引擎会请求robots.txt。但这

  • 本文向大家介绍JS实现页面超时后自动跳转到登陆页面,包括了JS实现页面超时后自动跳转到登陆页面的使用技巧和注意事项,需要的朋友参考一下 JS代码: 代码很简单,却很实用,希望小伙伴们能够喜欢,直接拿去用吧。

  • 本文向大家介绍python wxpython 实现界面跳转功能,包括了python wxpython 实现界面跳转功能的使用技巧和注意事项,需要的朋友参考一下 用wxpython设计界面时可能会出现界面嵌套的情况 这样就需要进行界面的跳转 但是貌似wxpython没提供界面跳转的方式(也可能是我菜。。。) 所以就需要借助threading模块 主要思想: 注:该代码为源码的一部分,经过删减可能会导

  • 本文向大家介绍JavaScript实现自动跳转文本功能,包括了JavaScript实现自动跳转文本功能的使用技巧和注意事项,需要的朋友参考一下 贴一段自动跳转文本的代码实现: 实现代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Vue 实现一个命令式弹窗组件功能,包括了Vue 实现一个命令式弹窗组件功能的使用技巧和注意事项,需要的朋友参考一下 前言 在日常工作中弹窗组件是很常用的组件,但用得多还是别人的,空闲时间就自己来简单实现一个弹窗组件 涉及知识点:extend、$mount、$el 使用方式: 目录结构 index.vue:组件布局、样式、交互逻辑 index.js:挂载组件、暴露方法 知识点 在此之