コード例 #1
0
        private string GetAddress(ActionExecutingContext context)
        {
            var address = GetHeader(context, "TENJIN-CLIENT-IP");

            if (TenjinUtils.IsStringNotEmpty(address))
            {
                return(address);
            }
            address = GetHeader(context, "CF-Connecting-IP");
            if (TenjinUtils.IsStringNotEmpty(address))
            {
                return(address);
            }
            address = GetHeader(context, "X-Forwarded-For");
            if (TenjinUtils.IsStringNotEmpty(address))
            {
                return(address);
            }
            address = context.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
            if (TenjinUtils.IsStringNotEmpty(address))
            {
                return(address);
            }
            return(string.Empty);
        }
コード例 #2
0
        private static string GetBearerToken(ActionContext context)
        {
            if (!context.HttpContext.Request.Headers.TryGetValue(TenjinConstants.AUTHORIZATION_HEADER_NAME, out var values))
            {
                return(string.Empty);
            }
            var header = values.FirstOrDefault();

            return(TenjinUtils.IsStringNotEmpty(header) && header.StartsWith(TenjinConstants.BEARER_AUTHORIZATION_NAME, StringComparison.OrdinalIgnoreCase)
                ? header
                : string.Empty);
        }
コード例 #3
0
        public FilterDefinition <T> GetPreExpression <T>()
            where T : BaseEntity
        {
            var expression = Builders <T> .Filter.Where(x => true);

            if (TenjinUtils.IsStringNotEmpty(_keyword))
            {
                if (_keyword.Contains("*") && TenjinRefUtils.GenerateTextIndexes <T>(out var _))
                {
                    expression = Builders <T> .Filter.And(expression, Builders <T> .Filter.Text(_keyword.Replace("*", " ").Trim()));
                }
                else
                {
                    var patterns = Regex.Matches(_keyword, "([a-zA-Z0-9]*)")
                                   .Select(x => x.Value?.Trim()).Where(x => !string.IsNullOrEmpty(x))
                                   .Select(x => Builders <T> .Filter.Regex("ValueToSearch", new BsonRegularExpression(x)));
                    expression = Builders <T> .Filter.And(expression, Builders <T> .Filter.Or(patterns));
                }
            }
            return(Builders <T> .Filter.And(expression.Concat(_definitions.Where(x => x.GetStage() == HttpExpressionDefinition.PRE_STAGE).Select(x => x.GetDefinition <T>()))));
        }