1

我正在使用ServiceStack.TextServiceStack.Logging.NLog记录从 .NET 客户端应用程序发送到/从 Web 服务发送的 DTO 请求。虽然机器通常是安全的,但我想编辑可能以纯文本形式存储的敏感信息(想想姓名、地址、基本身份验证凭据等)。

我查看了各种JsConfig<T>方法,但似乎我必须SerializeFn<T>为每个 DTO 实现一个。“遗漏”存在风险,我只想将其应用于日志记录范围。

我查看了NLog过滤器,when只是更改了是否记录消息。

ServiceStack.Logging在使用\记录 DTO 时,是否有一些通用方法可以用编辑标记替换敏感属性/键/属性NLog

4

1 回答 1

0

没有范围序列化程序选项可以更改应序列化的字段。

我正在考虑的可能解决方案是维护 DTO 类型的白名单,其中包含不应记录的敏感信息,或者使用反射来设置您不想要的属性null

ServiceStack 具有用于转换对象字典中的类型和从字典中重新水化类型的 API,因此您可以执行以下操作:

var map = requestDto.ToObjectDictionary();
ProtectedNames.ForEach(x => map.Remove(x));

然后,您可以将剩余的属性序列化map或将其转换回 Request DTO 而不删除属性:

var safeDto = map.FromObjectDictionary(requestDto.GetType());
于 2018-04-10T16:20:20.070 回答