コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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;
 }