前情提要
筆者公司因為需要符合資安要求,系統規劃中需要設計留下使用者足跡,筆者這邊第一個想到就是用ActionFilter設計,將Htpp Request對應的相關資訊,存到對應的紀錄表中。
內容
設計系統操作紀錄表
需要先設計一個存放系統操作紀錄的表
1 | CREATE TABLE [dbo].[SysAPLog]( |
撰寫ActionFilter
接著是本文的主軸,設計一個ActionFilter,攔截使用者的Request,並存回Table做紀錄,以便以後追縱用
1 | public class APLogActionFilter : IActionFilter |
撰寫相關Service
裡頭有用到「ISysAPLogService 」,參考如下:
1 | public interface ISysAPLogService |
接著實作這個Service
1 | public class SysAPLogService : ISysAPLogService |
引用ActionFilter
於Startup
中注入使用
1 | services.AddMvc(options => |
結論
主要的ActionFilter中有使用到將使用者的Request Data
,使用JsonConvert.SerializeObject
序列化後轉成字串,切記若Request Data
中的get, set
會執行過一遍,若其中邏輯有錯,可能會crash掉,筆者就遇到了,因此特別紀錄一下。