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

 

目录
相关文章
|
14天前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
21 7
|
12天前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
30 0
|
1月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
31 0
|
1月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
1月前
|
开发框架 .NET API
在 ASP.NET Core Web API 中使用异常筛选器捕获和统一处理异常
在 ASP.NET Core Web API 中使用异常筛选器捕获和统一处理异常
|
1月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
79 0
|
SQL Web App开发 存储
艾伟_转载:ASP.NET Session详解
当用户在 Web 应用程序中导航 ASP.NET 页时,ASP.NET 会话状态使您能够存储和检索用户的值。HTTP 是一种无状态协议。这意味着 Web 服务器会将针对页面的每个 HTTP 请求作为独立的请求进行处理。
1156 0
|
Web App开发 存储 SQL
|
Web App开发 SQL 存储