实现超时弹窗后跳转功能的asp代码实例


本文摘自PHP中文网,作者Y2J,侵删。

这篇文章主要介绍了Asp.net 中mvc 实现超时弹窗后跳转功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下

为了实现保持登录状态,可以用cookie来解决这一问题

假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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);

     }

   }

 }

但是页面直接跳转了,也没有一个提示,显得不是很友好,可以这样

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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请求呢?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

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代码实例的详细内容!

相关阅读 >>

《asp.net》数据绑定―datalist实践篇的图文代码详解

asp.net利用反射实现给model类赋值的示例代码分析

asp.net之exceptionfilter过滤器

asp.net页脚制作详解

asp.net(c#)如何读取excel的文件的实例详解

asp.net core 发送邮件

关于asp.net中的MVC介绍

asp.net MVC 中关于路径这个问题

有关asp.net中config文件的读写讲解

分享asp.net学习笔记(7)webpages 对象详解

更多相关阅读请进入《MVC》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...