发布于 2018-10-28 02:40:02
是的,您可以替换或屏蔽已审核的值,以隐藏敏感信息。
MaskableAuditSerializer:
公共类MaskableJsonNetAuditSerializer(IAuditingConfiguration : IAuditSerializer,ITransientDependency {私有只读IAuditingConfiguration _configuration;公共IAuditingConfiguration配置){ _configuration =配置;}公共字符串序列化(Object obj) { var options = new JsonSerializerSettings { ContractResolver =新MaskableAuditingContractResolver(_configuration.IgnoredTypes) };返回JsonConvert.SerializeObject(obj,options);}}MaskableAuditingContractResolver实现AuditingContractResolver:
公共类MaskableAuditingContractResolver : AuditingContractResolver { public MaskableAuditingContractResolver(List ignoredTypes):base(ignoredTypes) {}受保护的覆盖JsonProperty CreateProperty(MemberInfo成员,MemberSerialization memberSerialization) { var property =base.CreateProperty(成员,memberSerialization);if AuditingContractResolver{ property.ValueProvider =新MaskedValueProvider();}返回属性;}}MaskedValueProvider:
公共类MaskedValueProvider : IValueProvider {公共对象GetValue(对象目标){返回“*”;}公共空SetValue(对象目标,对象值){抛出新的NotImplementedException();}MaskedAuditedAttribute实现AuditedAttribute:
公共类MaskedAuditedAttribute : AuditedAttribute {}用法
public class LoginViewModel
{
[MaskedAudited]
public string Password { get; set; }
// ...
}https://stackoverflow.com/questions/52995468
复制相似问题