国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

詳解.net mvc session失效問題

2024-07-10 12:46:42
字體:
來源:轉載
供稿:網友

最近在研究有關.net mvc項目中的session失效問題,下面小編把研究過程給大家共享下,大家可以參考下。

最近解決基于.net mvc項目的session失效問題,這個跟大家聊聊。

1.問題分析

.net mvc中,Session失效需要考慮幾種情況:

•基于權限認證的Action,使用非Ajax請求;

•基于權限認證的Action,使用JQueryt Ajax請求;

•基于權限認證的Action,使用.net mvc封裝的Ajax請求;

•無權限認證的Action,使用非Aajx請求;

•無權限認證的Action,使用原生JQuery Ajax請求;

•無權限認證的Action,使用.net mvc封裝的Ajax請求;

基于權限認證的Action,session失效后AuthorizeAttribute都可以攔截,并在HandleUnauthorizedRequest方法中處理;無權限認證的Action需要在自定義的filter中,根據新建Session與已請求Session的區別進行判斷和處理。

2.基于權限認證的非Ajax請求

Authorize filter優先于其他功能過濾器執行,因此這里繼承AuthorizeAttribue,在HandleUnauthorizedRequest中處理session請求。

public class AuthorizeOfHandleUnAuthorizeAttribute:AuthorizeAttribute{protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext){//session失效重定向到登錄頁面filterContext.Result =new RedirectToRouteResult(new RouteValueDictionary(new { Controller = "Login", Action = "Login" }));}}

3.基于權限認證的Ajax請求

Ajax請求的Action在系統中存在兩種返回結果:JsonResult和PartialViewResult。

•JsonResult理論上可以通過在返回的結果上增加session超期屬性,客戶端進行判斷即可。但是考慮到項目已經完成,在所有ajax請求上增加判斷邏輯有些繁瑣。

服務端代碼處理ajax請求:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext){//ajax請求session超期處理if (filterContext.HttpContext.Request.IsAjaxRequest()){filterContext.HttpContext.Response.AppendHeader("sessionstatus","timeout");filterContext.HttpContext.Response.End();return;}filterContext.Result =new RedirectToRouteResult(new RouteValueDictionary(new { Controller = "Login", Action = "Login" }));}

客戶端代碼(這種處理方式對于返回結果為PartialViewResult的Action是不適用的):

onSuccess: function (xhr, status) {//獲取響應頭,sessionstatus,var sessionstatus = xhr.getResponseHeader("sessionstatus");if (sessionstatus == "timeout") {window.location = "/Login/Login";}}

•PartialViewResult情況的存在,直接否定上面的設想。項目中大部分Ajax請求都是基于.net mvc封裝的,直接更新指定div。

為了不做大量更改、且統一處理兩種返回結果的ajax請求,找到了另外一種方法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉义县| 虞城县| 柘荣县| 维西| 景洪市| 萍乡市| 长海县| 横峰县| 永泰县| 恭城| 兴和县| 盘锦市| 聂拉木县| 珠海市| 图木舒克市| 井冈山市| 郴州市| 霍邱县| 犍为县| 白河县| 屏东市| 墨竹工卡县| 阿拉善右旗| 枞阳县| 台江县| 阳新县| 日喀则市| 南川市| 金平| 镇康县| 吉木萨尔县| 太保市| 陆川县| 周至县| 桦川县| 安多县| 临泽县| 雅江县| 克山县| 包头市| 周口市|