如何将用户活动的日志添加到XAF中的表中?

时间:2013-09-18 11:49:47

标签: c# devexpress xaf

我有一个Log表,我需要添加用户的activities(特别是与安全相关的)。

例如,如果用户更改了密码或登录软件,我会将"password changed""user logged in"字符串添加到表中。我想我应该按照here

的说法覆盖默认的password change action

我是否正确,相应的行动是什么?它是由XAF提供的吗?我在documentation找不到任何内容。事实上,我也不知道如何将它添加到表中,直到现在我才将一些文本记录到txt文件中。

2 个答案:

答案 0 :(得分:2)

就像@ shamp00上面所说的那样,Audit Trail Module已经很好地做到了这一点。启用审计跟踪模块会记录所有内容,因此您只需编写代码以显示所需信息:-)
现在很遗憾,密码属性是只读的,因此无法访问,但您可以监控所有其他用户更改,包括密码重置,因为这会触发“下次登录时更改密码”属性的更改。 你需要做的就是

  1. 将审计跟踪模块添加到您的项目中。
  2. 将此代码段添加到您要审核的特定对象
  3. private XPCollection<AuditDataItemPersistent> userAuditTrail;  
    public XPCollection<AuditDataItemPersistent> UserAuditTrail  
    {  
      get  
          {  
              if(userAuditTrail == null)  
              {  
                  userAuditTrail = AuditedObjectWeakReference.GetAuditTrail(Session, user);  
              }  
          return userAuditTrail;  
           }
    }
    

    为了让这个对我起作用,我创建了一个名为employee的对象,它继承自DevExpress.ExpressApp.Security.Strategy.SecuritySystemUser,因为我们希望扩展SecuritySystemUser,不仅要添加完整的员工详细信息(名字,姓氏和地址详细信息),还要添加审核。现在因为password属性是只读的,我们无法审核对它的更改。 由于您使用的是Devexpress Universal,因此您可以获得源代码,因此您可以更改不喜欢的位并重新编译以满足您的需求。考虑将下面的代码段添加到“更改我的密码操作”中。

      

    AuditDataItem customDataItem = new AuditDataItem(myAuditedObject,   空值,       “CustomOldValue”,“CustomNewValue”,AuditOperationType.CustomData);   AuditTrailService.Instance.AddCustomAuditData(MySession的,   customDataItem); AuditTrailService.Instance.SaveAuditData(MySession的);

    然后,对于时间戳,您可以为要记录的每个事件(如登录)扩展控制器,并使用上面的代码段添加time to your audit log
    我希望这可以帮助你。我会继续研究它。

答案 1 :(得分:1)

这是the audit trail module的作用。

如果您需要将自定义数据添加到审计跟踪,请参阅名为Add Custom Data to the Audit Log的部分。