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