標籤:style class blog code http color
來自:http://www.cnblogs.com/zhouxunyu/p/3790122.html
分析:不同的使用者登入到系統後賦予不同的操作許可權,而使用者存在於資料庫中,標識使用者權限的欄位
也儲存在資料庫中的使用者表中。
問題:這個標識使用者權限的欄位從資料庫中取出如何儲存在啟動並執行程式中。
方案一:建立使用者類,將從使用者表查詢出來的資訊封裝到類裡面,使用者登入時執行個體化類擷取許可權欄位。
分析:該解決方案可行,弊端則是:當系統部署發布後同時線上訪問使用者量很大時,每次執行個體化的使用者類會很多,伺服器負荷會很大。
如果這個解決方案應用於C/S架構,我個人認為是最方便也是最好的。
方案二:將從使用者表中查詢出來的資訊,特別是標識使用者權限的欄位資訊儲存到Session中。
分析:該解決方案視乎也可行。弊端則是:Session存在著逾時機制,一但Session逾時這運行會報錯。Session逾時解決方案:Session.time=12000;或者在設定檔中配置
1 <configuration> 2 3 <system.web> 4 5 <sessionState 6 7 mode="InProc" 8 9 cookieless="true"10 11 timeout="30" />12 13 </system.web>14 15 </configuration>
如果要Session永不逾時,那麼就在頁面虛擬一個無內容的Ifram或者按鈕等等,定時重新整理它,Session就永遠不會逾時。但建議最好不要那樣,抓取逾時,讓使用者重新登入最好。
方案三:將從使用者表中查詢出來的資訊,特別是標識使用者權限的欄位資訊儲存到Cookie中。
分析:該解決方案似乎也可行。弊端則是:Cookie也存在著過時機制,同時如果同一台電腦登入多個使用者是就會存在著Cookie衝突。
解決Cookie衝突問題:利用索引值對,將ID作為鍵,在資料庫中ID永遠是唯一的,這樣就很輕鬆的解決了Cookie衝突問題,但在使用權限設定中最好不用Cookie,Cookie存在著風險,對整個應用程式來說不安全。如果使用者更改了本地的Cookie值那麼許可權就對應著發生變化了,建議不用。