我正在使用ServiceStack.Text
和ServiceStack.Logging.NLog
来记录从.NET客户端应用程序发送到Web服务或从Web服务发送的DTO请求。虽然机器通常是安全的,但我想编辑可能存储在纯文本中的敏感信息(想想姓名,地址,基本身份证明等)。
我查看了各种JsConfig<T>
方法,但似乎我必须为每个DTO实现SerializeFn<T>
。 “遗失一个”存在风险,我只想将其应用于日志记录范围。
我查看了NLog
个过滤器,when
只是更改了是否记录了邮件。
在使用ServiceStack.Logging
\ NLog
记录DTO时,是否有一些通用方法可以使用编校标记替换敏感属性/键/属性?
答案 0 :(得分:0)
没有用于更改应序列化字段的作用域序列化程序选项。
我正在考虑的可能解决方案是维护DTO类型的白名单,其中包含不应记录的敏感信息或使用反射来设置您不希望null
的属性。
ServiceStack具有converting Types in an object dictionary的API和Dictionaries中的rehydrate类型,因此您可以执行以下操作:
var map = requestDto.ToObjectDictionary();
ProtectedNames.ForEach(x => map.Remove(x));
然后,您可以序列化map
中的其余属性,或者将其转换回请求DTO,而不删除已删除的属性:
var safeDto = map.FromObjectDictionary(requestDto.GetType());