asp.net MVC 中 Session統一驗證的方法


驗證登錄狀態的方法有:1  進程外Session   2 方法過濾器(建一個類繼承ActionFilterAttribute)然后給需要驗證的方法或控制器加特性標簽

3 :新建一個BaseController  繼承Controller   把后面需要驗證的控制器都改成繼承BaseController   而不是Controller   

  

[csharp]  view plain  copy
 
 print?
  1. namespace Core.ProjectOA.WebApp.Controllers  
  2. {  
  3.     public class BaseController : Controller  
  4.     {  
  5.         //要過濾的控制器可以繼承此BaseController   
  6.   
  7.         /// <summary>  
  8.         /// 在控制器執行方法之前執行     
  9.         /// </summary>  
  10.         /// <param name="filterContext"></param>  
  11.         protected override void OnActionExecuted(ActionExecutedContext filterContext)//protected 只能被子類訪問  
  12.         {  
  13.             base.OnActionExecuted(filterContext);  
  14.             if (Session["userInfo"] == null)  
  15.             {  
  16.                 filterContext.Result = Redirect("/Login/Index");//  沒有返回值, 所以不是return   是filterContexr.Result    
  17.             }  
  18.         }  
  19.   
  20.     }  
  21. }  

 之所以是filterContext.Result = Redirect("/Login/Index");   而不是直接跳轉  是因為 過濾器是切面 ,請求必須返回一個ActionResult結果   如果這里直接跳轉,還是需要一個結果,所以還會執行  Index方法 ,所以此處要返回一個結果  (Redirect 返回的就是一個ActionResult)  就不會繼續執行后面的Index方法了

注意:這種方式只能控制get請求新頁面  對於異步請求是無法控制的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM