淺析ASP.NET MVC :MVC頁面驗證與授權_.Net教程
推薦:解析.NET Framework 新功能和增強的功能ASP.NET 移動控件(原來為 Microsoft Mobile Internet Toolkit)擴展了 .NET Framework 和 Visual Studio .NET,提供了對移動電話和個人數據助理 (PDA) 等移動(無線)設備的支持。.NET Framew
在ASP.NET MVC中,如何來實現表單的驗證與授權訪問呢?至少在CTP3中,還沒有一個官方的解決方案。ASP.NET WebForm的表單驗證和授權機制是否適合在ASP.NET MVC中使用呢?帶著這些問題來進入我們今天的主題。
在ASP.NET WebForm的架構下,我們可以通過一定的配置即可實現用戶身份驗證和授權。特別是在ASP.NET 2.0的Membership功能的支撐下,可以做到更加簡潔可復用的用戶驗證系統。通過web.config可以做到對頁面或目錄對不同用戶身份可見性的定制,但是它是基于物理文件和目錄。而在ASP.NET MVC架構下,用戶訪問的每一個頁面在磁盤中并沒有一個固定的物理文件,它是通過Controller控制數據與視圖的組合來生成HTML代碼,進而向客戶端輸出。那么我們該如何來復用已有的表單驗證授權機制呢?
在MVC中,請求的功能入口是Controller相應的Action函數,我們可以在函數執行前去控制請求權限。在ASP.NET MVC Preview 2后,提供了一個機制讓我們可以對Action的AOP攔截,這個接口定義如下: public interface IActionFilter
| 以下為引用的內容: { void OnActionExecuted(ActionExecutedContext filterContext); void OnActionExecuting(ActionExecutingContext filterContext); void OnResultExecuted(ResultExecutedContext filterContext); void OnResultExecuting(ResultExecutingContext filterContext); } |
我們有兩種方式來實現攔截,一種我們可以通過定義Attribute來實現攔截的功能,在System.Web.Mvc程序集中有一個ActionFilterAttribute抽象類,通過重寫這個抽象類的這些虛方法,我們就可以實現對特定的執行過程進行攔截。
另一種方法,我們注意到Controller這個類也實現了IActionFilter這個接口,并且也提供了這四個函數的虛擬方法定義。框架內部,在調用Action方法的時候同時來調用這些攔截方法。具體的可以參考:ControllerActionInvoker 這個類的實現,所有的Action的調用都在這個類當中被實現。所以我們只要重寫Controller里這四個虛方法,也可完成本Controller面的所有Action的攔截。
在這里,我也找到了國外友人已經實現好的基于角色的MVC權限控制的方案。
分享:.NET教程之ASP.NET緩存方法分析和實踐示例盡早緩存;經常緩存 您應該在應用程序的每一層都實現緩存。向數據層、業務邏輯層、UI 或輸出層添加緩存支持。內存現在非常便宜 — 因此,通過以智能的方式在整個應用程序中實現緩存,
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-淺析ASP.NET MVC :MVC頁面驗證與授權
。