/// <summary> /// Get Client Ip using HttpContextAccessor /// </summary> /// <param name="settings"></param> /// <param name="httpContext"></param> /// <returns></returns> public static string GetUserId(APIRateLimiterUserIdOptions settings, IHttpContextAccessor httpContext) { string ip = string.Empty; if (httpContext.HttpContext?.User?.Identity?.IsAuthenticated ?? false && !string.IsNullOrWhiteSpace(settings.UserIdClaim)) { ip = httpContext.HttpContext.User.Claims.FirstOrDefault(x => x.Type == settings.UserIdClaim)?.Value; } return(ip); }
public static IApiRateLimiterUserIdServiceRegistration AddAPIRateLimiterUserId(this IServiceCollection service, Action <APIRateLimiterUserIdOptions> options) { service.Configure(options); service.AddScoped <IAPIRateLimiterUserIdHttpFilterService, IapiRateLimiterUserIdHttpFilterService>(); service.AddScoped <IAPIRateLimiterUserIdHttpService, IapiRateLimiterUserIdHttpService>(); var opt = new APIRateLimiterUserIdOptions(); options(opt); return(new ApiRateLimiterUserIdServiceRegistration() { Options = opt, ServiceCollection = service }); }
public IapiRateLimiterUserIdHttpService(IAPIRateLimiterUserIdStorageProvider provider, IHttpContextAccessor httpContext, IOptions <APIRateLimiterUserIdOptions> settings) { _provider = provider; _httpContext = httpContext; _settings = settings.Value; }