ASP.NET:Forms身份驗證和基於Role的權限驗證


從Membership到SimpleMembership再到ASP.NET Identity,ASP.NET每一次更換身份驗證的組件,都讓我更失望。Membership的唯一作用就是你可以參考它的實現,它的數據庫創建和擴展方面就真的讓人實在無法使用了。

當大家歡呼着讓ASP.NET開發走上ASP MVC的正確道路時,身份驗證組件卻走的更遠了:SimpleMembership除了第三方驗證的參考價值,它的主鍵和對領域模型的入侵讓它成了擺設,而ASP.NET Identity除了把第三方驗證搞的更復雜化外依然沒有改進。想起SimpleMembership在code first方面的支持上給我帶來的各種麻煩讓我現在依然碎碎念。

ASP.NET Identity在Code First這方面雖有改進,但在依賴方面不只是個IdentityUser的繼承,竟然還用IdentityDbContext試圖搞我的DbContext,你知道我有沒有DbContext啊?

幸虧核心都還是基於Cookie的,Forms身份驗證也一直可以使用,所以毫不猶豫拿出Forms+FormsAuthentication砍死了SimpleMembership和ASP.NET Identity。這倆貨讓我這兩年賭了無數次,冒着被無數小白和偽實戰專家真小白噴的危險我也必須拋棄。還要慶幸權限驗證的核心頁依然是IPrincipal,使用自定義的RoleProvider可以將權限驗證從這倆雞肋里拯救出來。

1.配置好Web.config

2.清爽的User和Role

3.只需要將2個方法的RoleProvider

4.IAccountService和IUserRepo

只用於演示,依賴注入頁簡單使用Factory的靜態方法。

為了便於演示,使用admin登錄的,我們返回admin權限。

5.功能演示:

一想到我沒有任何依賴任意測試的Domain Model,只對外接口依賴的Controller,心里真舒坦。登錄、退出、admin權限控制,太晚了,不截圖了自己跑Demo吧。

 

點擊此處下載本文的示例代碼

 


免責聲明!

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



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