ApiProtector.Net (https://apiprotector.net/),给出错误:已经添加了一个具有相同键的元素。Key: X-API-Protector,当我使用多个规则保护一个端点时。
[ApiProtector(ApiProtectionType.ByIpAddress, Limit: 10, TimeWindowSeconds: 10, PenaltySeconds: 60)]
[ApiProtector(ApiProtectionType.ByIdentity, Limit: 10, TimeWindowSeconds: 10, PenaltySeconds: 60)]
发布于 2021-10-11 12:08:13
我发现解决方案是ApiProtector.Net中的一个bug。尝试在隐藏程序中多次添加密钥: X-API-Protector
创建一个继承自ApiProtector的类,并覆盖OnActionExecuted方法。
public class CustomApiProtector : ApiProtector
{
public CustomApiProtector(ApiProtectionType type, uint limit, uint timeWindowSeconds, uint penaltySeconds ):base(type, limit, timeWindowsSecond, penaltySeconds)
{
}
public override void OnActionExecuted(ActionExecutedContext context)
{
base.OnActionExecuted(context);
IHeaderDictionary headers = context.HttpContext.Response.Headers;
StringValues locationHeaderValue = string.Empty;
if (headers.TryGetValue("X-API-Protector", out locationHeaderValue))
{
context.HttpContext.Response.Headers.Remove("X-API-Protector");
}
}
}https://stackoverflow.com/questions/69525028
复制相似问题