在我的web應用程序,我想表現出「管理」菜單隻有誰已被添加到數據庫管理員權限的用戶鏈接。顯示/隱藏的菜單項目根據登錄的用戶
什麼是ASP.NET MVC 2中做到這一點的最好方法是什麼?
目前,我通過檢查用戶是否在每個頁面的管理數據庫表中存在這樣做。顯然,必須有更好的方式來做到這一點。
如果有幫助,我使用的是Windows身份驗證。
在我的web應用程序,我想表現出「管理」菜單隻有誰已被添加到數據庫管理員權限的用戶鏈接。顯示/隱藏的菜單項目根據登錄的用戶
什麼是ASP.NET MVC 2中做到這一點的最好方法是什麼?
目前,我通過檢查用戶是否在每個頁面的管理數據庫表中存在這樣做。顯然,必須有更好的方式來做到這一點。
如果有幫助,我使用的是Windows身份驗證。
你也許可以保存管理狀態在會話變量或東西,但它似乎更適合於創建菜單的局部視圖(如果你還沒有的話),只是在那裏檢查。您仍然會在每個頁面請求上爲其調用數據庫,但不會重複代碼。除非你現在有性能問題,否則一個額外的電話真的不是什麼大問題。
如果你確實有性能問題,請確保你優化你自己的代碼,在數據庫中擁有所有正確的索引等等。通常可以通過重構來獲得很多性能增益(特別是與db相關的問題)如何做事,而不是什麼完成。
UPDATE:
在ASP.NET MVC 2其實還有一個更好的方法可以做到這一點,結合Html.RenderAction()
和AuthorizeAttribute
(或者可能是寫自己的繼承屬性,該屬性設置一個標誌,而不是返回一個錯誤,當用戶未被授權)。這樣你可以最大限度地減少查看邏輯,並更好地符合MVC原則。
可能相關 - http://stackoverflow.com/questions/1968772/asp-net-mvc-database-driven-menu-with-caching,http://stackoverflow.com/questions/723994/best-way -to-線了數據庫驅動的菜單式-ASP淨MVC, – Ahmad 2010-03-19 12:23:57