Обработчик запросов и ответов журнала. Необходимо отфильтровать конфиденциальные данные - PullRequest
0 голосов
/ 19 июня 2020

Класс обработчика запросов и ответов журнала добавлен в HttpConfiguration MessageHandler.

Когда он возвращает объект в журнал, он мне нужен для фильтрации конфиденциальных данных. например, электронная почта

Но я не уверен, как мы можем узнать, есть ли у объекта конфиденциальные данные.

Вот код, который получает объект.

// once response body is ready, log it
            var responseBody = await result.Content.ReadAsStringAsync();

            responseBody = JToken.Parse(responseBody).ToString(Formatting.Indented);


            Logger.DisplayDebug(LoggingLevel.Info, "INFO", "RESPONSE BODY: " + responseBody);

У меня есть попытался создать интерфейс IGDPRSafe и заставить модели ответа, содержащие конфиденциальные данные, реализовать этот интерфейс.

Но когда я проверяю, что responseBody имеет тип IGDPRSafe, он не работает, распознает, что он реализует интерфейс.

Итак, теперь я застрял.

ОБНОВЛЕНИЕ: Вы все чушь sh

1 Ответ

0 голосов
/ 23 июня 2020

Это то, что вам нужно. Создайте настраиваемый атрибут SensitiveDataAttribute.

Передайте атрибут свойствам, которые содержат конфиденциальные данные.

private static string StripOutSensitiveData(object objectToLog)
    {
        if (objectToLog == null)
        {
            return string.Empty;
        }

        var type = objectToLog.GetType();
        var properties = type.GetProperties();

        if (properties.Length == 0)
        {
            return JsonConvert.SerializeObject(objectToLog);
        }
        else
        {
            

            var nonSensitiveProperties = type
                .GetProperties()
                .Where(IsNotSensitiveData)
                .Select(property => property.GetValue(objectToLog));

            

            return JsonConvert.SerializeObject(nonSensitiveProperties);
        }
    }

    private static bool IsNotSensitiveData(PropertyInfo property) =>
        property.GetCustomAttributes<SensitiveDataAttribute>().Count() == 0;
}

Теперь мне просто нужно узнать, как удалить конфиденциальные данные, когда свойство является списком который содержит модель, которая также имеет свойства ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...