提交功能
This commit is contained in:
58
Http/SignValidationAttribute.cs
Normal file
58
Http/SignValidationAttribute.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
// 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user