Skip to content

Commit

Permalink
Fix RealIpHeader & ClientIdHeader resolving
Browse files Browse the repository at this point in the history
  • Loading branch information
cristipufu committed Dec 12, 2020
1 parent f6248d3 commit 5434672
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions src/AspNetCoreRateLimit/Middleware/RateLimitConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,31 @@ public class RateLimitConfiguration : IRateLimitConfiguration

public virtual void RegisterResolvers()
{
if (!string.IsNullOrEmpty(ClientRateLimitOptions?.ClientIdHeader) || !string.IsNullOrEmpty(IpRateLimitOptions?.ClientIdHeader))
string clientIdHeader = GetClientIdHeader();
string realIpHeader = GetRealIp();

if (clientIdHeader != null)
{
ClientResolvers.Add(new ClientHeaderResolveContributor(HttpContextAccessor, ClientRateLimitOptions.ClientIdHeader));
ClientResolvers.Add(new ClientHeaderResolveContributor(HttpContextAccessor, clientIdHeader));
}

// the contributors are resolved in the order of their collection index
if (!string.IsNullOrEmpty(ClientRateLimitOptions?.RealIpHeader) || !string.IsNullOrEmpty(IpRateLimitOptions?.RealIpHeader))
if (realIpHeader != null)
{
IpResolvers.Add(new IpHeaderResolveContributor(HttpContextAccessor, IpRateLimitOptions.RealIpHeader));
IpResolvers.Add(new IpHeaderResolveContributor(HttpContextAccessor, realIpHeader));
}

IpResolvers.Add(new IpConnectionResolveContributor(HttpContextAccessor));
}

protected string GetClientIdHeader()
{
return ClientRateLimitOptions?.ClientIdHeader ?? IpRateLimitOptions?.ClientIdHeader;
}

protected string GetRealIp()
{
return IpRateLimitOptions?.RealIpHeader ?? ClientRateLimitOptions?.RealIpHeader;
}
}
}

0 comments on commit 5434672

Please sign in to comment.