Asp.net MVC Session过期异常的处理-阿里云开发者社区

开发者社区> 仲强> 正文

Asp.net MVC Session过期异常的处理

简介: 对于用户登录后将数据存储到session中,但是对于session过期引发的异常,会导致很多程序崩溃,或数据不对。所以正对于session过期处理,势在必行。 1.在一些数据持久化的操作中,我们会使用一些session中的数据,向后台进行数据持久化,但是如果session中没有数据的话,会出现很多意想不到的错误。
+关注继续查看

对于用户登录后将数据存储到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       else
15       {
16         filterContext.Result = new JsonResult
17       {
18         Data = new
19         {
20           Success = false,
21           Message = string.Empty,
22           Redirect = redirectUrl
23         }
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 });        

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
解决.Net 4.0 A potentially dangerous Request.Form value was detected from the client 异常
解决ASP.NET 4.0   "A potentially dangerous Request.Form value was detected from the client". 错误在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值。
790 0
Halcon怎么处理32位的真彩色图?
Halcon怎么处理32位的真彩色图?
7 0
[ASP.NET]强大的网页处理类NSoup
我们如果在项目中碰到要处理HTML,如果是.NET程序员的话,强烈推荐使用NSoup,不然的话截取字符串是在是太痛苦了。NSoup是一个开源框架,是JSoup的.
989 0
Asp.Net Web API 2第七课——Web API异常处理
原文:Asp.Net Web API 2第七课——Web API异常处理 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.
777 0
+关注
仲强
一个不撞南墙不回头的傻孩子
50
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载