系統每個用戶的權限通過管理員來設定的,每個人的權限都可能不同,現在遇到一個問題,在每個頁面如何去獲取權限?目前有兩種方案,一種是每一個頁面都去查詢資料庫,每二種是保存到session中,每次在session中獲取;第一種感徑訓影響性能,第二種 session保存較多資訊也會影響性能,請教各位有沒有其它更好的方案?
uj5u.com熱心網友回復:
不是保存在session就是保存在 redis這種快取里。反正不會每個頁面打開都去刷資料庫拿取的。
uj5u.com熱心網友回復:
而且,說性能問題的,其實是最最蒼白的較勁了。你們每天訪問量多少呢,峰值又是多少呢?
都要考慮到性能問題了,那還在糾結session還是快取來存盤權限,就有點可笑了。
uj5u.com熱心網友回復:
繼承另外一個界面就行了啊
uj5u.com熱心網友回復:
權限你可以分大類的吧,一個系統能有多少個大類?都放在SESSION里,就可以判定當前用戶屬于哪一個大類。如果你想大類里再細分,那你也可以再設一個分類,不同分類也存在于SESSION中,這樣來,就可以得到 A X B 種的權限組合。再有就是程式里也可以加一些條件限定一些操作,例如當LIST 是空的時候,就不能對其進行 修改,洗掉等操作。 其實.NET還有一種權限設定方法,通過WEB.CONIFG 角色來控制,每一個檔案夾里存有一個WEB.CONFIG檔案,里邊有允許與不允許訪問的角色。 當系統運行后,對應的不是這個角色的就無法進入這個檔案夾的所有頁面,直接跳到指定的頁面(登錄頁) 具體可以查有關資料。uj5u.com熱心網友回復:
可以采用特性,在特性里面根據登錄的人員ID來分配權限uj5u.com熱心網友回復:
登錄后,設定你的PermissionList到HttpContext.Session,這樣,該用戶每次訪問的時候,就可以直接從Session里面獲取PermissionList。用戶退出登錄時,Clear Session。uj5u.com熱心網友回復:
權限存入資料庫是必須的,建議用Cookies,不要用sessionuj5u.com熱心網友回復:
首先 使用人是多少, 服務器是什么樣的, 如果就幾百人使用 或者 幾千人使用, 回回走資料庫也沒啥影響。 根本體會不出性能。還有就是實時性。
如果存入session 或者cookie 那 管理員 給A修改了 權限。 A在不退出的情況下 豈不是一直都有權限。 你們系統對權限實時性有沒有要求
也可以存入redis 或者 直接用.NET 操作快取。 那管理員在修改權限的時候 代碼又要考慮 快取和資料庫的一致性。 要操作2個。
所以在性能足夠的情況下 每個頁面都走下資料庫好了。 連接資料庫開關控制好 即使釋放就沒問題。
當然 如果你的實時性是一天 那完全可以操作資料庫, 然后快取設定24小時。 這樣每個頁面的判斷都會走快取。 也不會管最新的權限問題。 但在給某人增加權限的時候就會很悲劇了。管理員添加后, 這個人在快取里依然找不到
但我還是那句話, 不用過早的考慮性能, 只是給自己添加煩惱。 應該考慮的是擴充,介面。別把程式寫死了
uj5u.com熱心網友回復:
放到SESSION里。 管理員在編輯A權限的時候。 A會一直沒有。 除非退了重進。
如果是給A取消權限。 A一直不退, 那就等于沒取消。 你覺得那。 大神
uj5u.com熱心網友回復:
公司用的系統好像是每次都去資料庫查的...uj5u.com熱心網友回復:
權限本來就不一定是實時的。
因為權限的改動,可能不會太頻繁。
至于要達到你說的實時要求,其實也很簡單,無論是session還是快取。
都可以針對重繪或者做依賴項來解決這種問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/130325.html
標籤:ASP.NET
上一篇:Xamarin參考Webservice問題,編譯沒問題,運行時候就報錯了
下一篇:c#中lambda運算式動態欄位
