從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吧。