首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AuditIgnore on IdentityUser - Audit.Net

AuditIgnore on IdentityUser - Audit.Net
EN

Stack Overflow用户
提问于 2019-01-08 04:38:17
回答 1查看 787关注 0票数 2

我正在使用Audit.Net跟踪更改。很好的利布雷

通过使用Audit.EntityFramework扩展,我们可以忽略要跟踪的属性。

代码语言:javascript
复制
public class User
{
    public int Id { get; set; }
    [AuditIgnore]
    public string Password { get; set; }
    ...
}

但我有问题

  1. 我不使用Audit.EntityFramework扩展。只需使用我自己的自定义数据提供程序获得json格式即可。所以[AuditIgnore]不能在这里工作。
  2. 如何忽略password property类上的IdentityUser

这里我的自定义数据提供程序

代码语言:javascript
复制
public class MyCustomDataProvider : AuditDataProvider
    {
        public override object InsertEvent(AuditEvent auditEvent)
        {
            var AuditEventInJson = auditEvent.ToJson();

            //Save into to DB;
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-08 06:22:42

ToJson()方法将在内部使用JSON.NET库来序列化事件,并将使用静态属性Audit.Core.Configuration.JsonSettings中的默认设置。

因此,如果您可以更改包含密码的类的代码,则可以使用JsonIgnore属性:

代码语言:javascript
复制
public class User
{
    [JsonIgnore]
    public string Password { get; set; }
    ...
}

或者,如果您不能装饰该属性,则可以创建一个自定义合同补救器来一般忽略属性,例如忽略任何称为“密码”的属性:

代码语言:javascript
复制
class MyCustomResolver : DefaultContractResolver
{
    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        var props = base.CreateProperties(type, memberSerialization);
        return props.Where(p => p.PropertyName != "Password").ToList();
    }
}

要使用Audit.NET ToJson()方法,需要在Audit.NET全局配置上设置契约解析器,如下所示:

代码语言:javascript
复制
Audit.Core.Configuration.JsonSettings.ContractResolver = new MyCustomResolver();

第三个选项是附加一个习俗行动,以便在事件保存之前删除要忽略的属性,例如:

代码语言:javascript
复制
Audit.Core.Configuration.AddCustomAction(ActionType.OnEventSaving, scope =>
{
    var efEvent = scope.Event.GetEntityFrameworkEvent();
    efEvent.Entries.ForEach(e => 
    { 
        e.Changes.RemoveAll(ch => ch.ColumnName == "Password");
    });
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54085290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档