各位前輩好
目前將JWT的bearer token存在cookie的httpOnly內實現登入,清除token實現登出。
不過使用者除了登入登出之外,還有Menu使用權限的資訊,權限可由API取得,如下圖:
但每次要驗證權限時都Call API,若使用者多的時候API端會有壓力,
都存在Cookie因為大小限制估計也不行,
故想到下面其他方法,隔一段時間才call API更新,其他時候用暫存的:
1.存在Singleton的Service中(也就是Server的ram裡面,像Dictionary,在cookie內存一個key就好)。
2.像以前一樣存在DB裡面,同樣cookie內存一個key。
那樣做會比較好呢?或是有其他做法?
*環境為.net core 2.1
我這邊的作法是直接回傳menu的路由給前端使用。
所以權限是在登入的時候就一起生成傳回給前端儲存。
當然了,因為cookie的容量問題。我並不是儲存在cookie上。
畢竟我是採用vue的應用。基本上來說變數並不會消失。也沒有換頁方面的問題存在。
真的重整頁面了,就再請求一次就好。
至於請求安全性的問題。畢竟我是採用 Middleware 的做法。在token存在的同時,本身也會緩存對應的權限資料。並不會特別再去請求db處理。
如果突然有在後台重新調整權限之類的動作。早前的做法是會全部對應的人重置緩存。
但隨著後期的人數變多。
後來就採用將人員登出處理。(並不是全部,而是有對應的群組才做處理)
他們重新登入。其實前端重整也會拿到新的設定權限。
但丟出重整的命令總是不好。
現在正在研究新的做法,要搭配 winsock 來處理。還沒研究完全。
感謝回覆!目前使用LazyCache(MemoryCache 懶人版)儲存使用者的Menu權限。排程以前都只用windows排程,Hangfire 有機會再來用用看
deh Of course, you rock :)