开发者社区> 仲强> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

 

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

相关文章
asp.net Session详解(再转)
原创:heallven   阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解。否则,阅读过程中会在相应的内容上遇到不同程度的问题。 懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了解ASP.NET Web应用程序模型 了解ASP.NET Web应用程序配置文件Web.config的作用、意义及使用方法 了解Internet Information Services(以下简称IIS)的基本使用方法 了解如何在Microsoft SQL Server中创建一个数据库。
685 0
艾伟_转载:ASP.NET Session详解
当用户在 Web 应用程序中导航 ASP.NET 页时,ASP.NET 会话状态使您能够存储和检索用户的值。HTTP 是一种无状态协议。这意味着 Web 服务器会将针对页面的每个 HTTP 请求作为独立的请求进行处理。
964 0
+关注
仲强
一个不撞南墙不回头的傻孩子
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题)
立即下载
蚂蚁金服大数据开放式创新实践
立即下载
低代码开发师(初级)实战教程
立即下载