2011-08-27 49 views
1

在我的ASP.NET MVC 3應用程序中,我有兩種類型的用戶 - 普通用戶和管理員用戶。顯然後者比前者擁有更大的特權。我有一個頁面級別的授權實現,但對於屏幕級別的項目(顯示此按鈕,如果管理員等)我想知道什麼是最合適的解決方案,使所有屏幕上可用的布爾IsAdmin標誌。我可以想到一堆不同的方法cookie /會話變量/ httpcontext,但我想知道什麼是用於成功的生產。任何指導表示讚賞提前ASP.NET MVC3 - 最合適的方式來存儲IsAdmin信息

JP

感謝

回答

0

的ViewBag似乎是一個容易的選擇。

ViewBag.UserIsAdmin = somevalue; 

這對每個視圖都是可用的,並且旨在用於查看不屬於模型一部分的數據。

唯一的缺點是你需要在需要它的視圖上填充每一個請求,但是如果它是一個全局事物,你實際上可以在一個基本控制器的初始化方法中實現。

至於如何在請求之間存儲它,而不是cookie。那些很容易被原諒。您可以使用會話將其存儲在請求之間,或者如果您的基本控制器中的請求速度很快(並且無法使用會話),則可以簡單地爲每個請求重新填充該請求。

0

不要使用會話,因爲你必須檢查它是否超時或沒有。在很多地方很難編碼(我的經驗)。
您可以使用由ASP.NET成員資格利用的表單身份驗證。然後,您可以安全地使用HttpContext.User.Identity來檢查用戶權限