Files
BabyVideoService/Http/SignValidationAttribute.cs
2026-02-08 16:58:32 +08:00

58 lines
1.8 KiB
C#

// Filters/SignValidationFilter.cs
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.DependencyInjection;
namespace ACBuildService.Filters;
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class SignValidationAttribute : Attribute, IAsyncActionFilter
{
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
// 检查请求是否包含 form-data
if (context.HttpContext.Request.HasFormContentType)
{
var form = context.HttpContext.Request.Form;
// 尝试从表单中获取 Sign
if (form.TryGetValue("Sign", out var signValue))
{
if (!signValue.ToString().Equals(App.Settings.Password))
{
// 验证失败,直接返回错误
context.Result = new ObjectResult(new ResponseData<string>
{
Code = (int)ErrorCode.ArgsError,
Data = "sign is error"
});
return;
}
}
else
{
// 没有 Sign 字段
context.Result = new ObjectResult(new ResponseData<string>
{
Code = (int)ErrorCode.ArgsError,
Data = "sign is null"
});
return;
}
}
else
{
context.Result = new ObjectResult(new ResponseData<string>
{
Code = (int)ErrorCode.ArgsError,
Data = "请求格式必须是 form-data"
});
return;
}
// 验证通过,继续执行 Action
await next();
}
}