Files
Ayay/SHH.CameraSdk/Temp/UserActionFilter.cs
2026-01-16 14:30:42 +08:00

42 lines
1.3 KiB
C#

using Microsoft.AspNetCore.Mvc.Filters;
namespace SHH.CameraSdk;
/// <summary>
/// 全局用户操作过滤器
/// 作用:拦截所有 API 请求,记录关键操作(如新增、删除、修改设备)
/// 优化:使用依赖注入 (DI) 获取存储服务,避免直接文件 IO 导致的锁冲突
/// </summary>
public class UserActionFilter : IActionFilter
{
// 【关键点】构造函数注入
// ASP.NET Core 会自动把我们在 Program.cs 中注册的 IStorageService 实例传进来
public UserActionFilter()
{
}
/// <summary>
/// Action 执行【后】触发
/// </summary>
public void OnActionExecuted(ActionExecutedContext context)
{
// 1. 获取请求的基本信息
var method = context.HttpContext.Request.Method;
var path = context.HttpContext.Request.Path;
// 2. 过滤逻辑:为了防止日志爆炸,我们通常只记录非 GET 请求
// (例如:只记录 POST/PUT/DELETE 等修改性操作)
if (method != "GET")
{
var ip = context.HttpContext.Connection.RemoteIpAddress?.ToString() ?? "Unknown";
}
}
/// <summary>
/// Action 执行【前】触发 (此处不需要处理)
/// </summary>
public void OnActionExecuting(ActionExecutingContext context)
{
// Do nothing
}
}