博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net MVC Session过期异常的处理
阅读量:7118 次
发布时间:2019-06-28

本文共 1835 字,大约阅读时间需要 6 分钟。

对于用户登录后将数据存储到session中,但是对于session过期引发的异常,会导致很多程序崩溃,或数据不对。所以正对于session过期处理,势在必行。

1.在一些数据持久化的操作中,我们会使用一些session中的数据,向后台进行数据持久化,但是如果session中没有数据的话,会出现很多意想不到的错误。(一般的session过期)

  使用MVC中的Filter来对Session进行验证:MVC中的 AuthorizationFilter 能够在实际访问Controller前,拦截请求,这个时候在这里可以对Session的有效性进行检查,如果发现Session失效了,就把用户转向登陆页
  代码如下:
  

1 public class MyAuthorizeAttribute : FilterAttribute, IAuthorizationFilter 2 { 3   public void OnAuthorization(AuthorizationContext filterContext) 4   { 5     var loginUser = filterContext.HttpContext.Session["User"]; 6     //当session过期的时候,进行跳转 7     if (loginUser == null) 8     { 9       var redirectUrl = ""; //跳转的地址10       filterContext.Result = new RedirectResult(redirectUrl);11       return;12     }13   }15 }

 

2.对于Ajax请求的中,Session失效的处理:如果发现是Ajax请求,就返回 特定格式的Json数据 ,客户端对于这个数据进行处理,发现有Session失效的情况,就跳转到登录页面。

代码如下:

1 public class MyAuthorizeAttribute : FilterAttribute, IAuthorizationFilter 2 { 3   public void OnAuthorization(AuthorizationContext filterContext) 4   { 5     var loginUser = filterContext.HttpContext.Session["User"]; 6     //When user has not login yet 7     if (loginUser == null) 8     { 9       var redirectUrl = ""; //跳转的地址10       if(!filterContext.HttpContext.Request.IsAjaxRequest())11       {12         filterContext.Result = new RedirectResult(redirectUrl);13       }14       else15       {16         filterContext.Result = new JsonResult17       {18         Data = new19         {20           Success = false,21           Message = string.Empty,22           Redirect = redirectUrl23         }24       };25     }26     return;27   }28 }

客户端的js代码如下:

1 $.ajax({ 2     type: "POST", 3     url: "url", 4     success: function (msg) { 5         if (msg.Success) { 6             …….  7         } 8         if (msg.Redirect) { 9             window.location = msg.Redirect;10         }11     }12 });

 

转载地址:http://fnbel.baihongyu.com/

你可能感兴趣的文章
mongodb删除表
查看>>
ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求...
查看>>
ICO与区块链:剖析ICO的金融与技术原理
查看>>
一文读懂深度适配网络(DAN)
查看>>
企业选择数据安全防护平台九个考虑因素
查看>>
当今云计算的挑战:规划,流程和人员
查看>>
用DeepMind教AI玩游戏?一文为你讲清原理!
查看>>
我的WCF之旅(4):WCF中的序列化[上篇]
查看>>
NGINX小技巧--将所有目录和目录下所有文件分别给与不同的权限
查看>>
DOCKER功能练习
查看>>
如何来看单片机外设A/D转换器ADC0804时序图
查看>>
NetApp发布云计算计划及新操作系统
查看>>
IPHONE 6S电池保护壳丑?漂亮的都有专利了
查看>>
云计算和社交网络将推动美科技业重组
查看>>
浙江乌镇已布500多个人脸识别摄像头;宁波、嘉兴将引入中考英语人机对话考试技术,用机器为考生口语评分...
查看>>
15分钟学会使用Git和远程代码库
查看>>
《OpenStack实战》——1.3 关联OpenStack及其控制的计算资源
查看>>
《C++面向对象高效编程(第2版)》——1.15 小结
查看>>
人工智能悖论:简单的动作比复杂的推理更难以实现
查看>>
《C++游戏编程入门(第4版)》——2.9 使用逻辑运算符
查看>>