1

我有一张Log桌子,我需要添加用户的activities(尤其是与安全相关的)。

例如,如果用户更改她的密码或登录到软件,那么我将添加"password changed""user logged in"字符串到表中。我想我应该按照这里password change action的解释覆盖默认值

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

4

2 回答 2

2

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

  1. 将审计跟踪模块添加到您的项目中。
  2. 将此代码段添加到您要审核的特定对象
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 以不仅添加完整的员工详细信息(名字、姓氏和地址详细信息),还添加审计。现在因为密码属性是只读的,我们无法审核对它的更改。由于您使用的是 Devexpress Universal,因此您拥有源代码,因此您可以更改您不喜欢的位并重新编译它们以满足您的需要。考虑将下面的代码段添加到“更改我的密码操作”中。

AuditDataItem customDataItem = new AuditDataItem(myAuditedObject, null, "CustomOldValue", "CustomNewValue", AuditOperationType.CustomData); AuditTrailService.Instance.AddCustomAuditData(mySession, customDataItem); AuditTrailService.Instance.SaveAuditData(mySession);

然后对于时间戳,您可以为要记录的每个事件(如登录)扩展控制器,并使用上面的代码片段将时间添加到您的审核日志中。
我希望这可以帮助你。不过,我会继续研究它。

于 2014-01-04T19:12:51.603 回答
1

这就是审计跟踪模块所做的。

如果您需要将自定义数据添加到审计跟踪,请参阅名为“将自定义数据添加到审计日志”的部分。

于 2013-09-19T09:41:42.613 回答