我有一个Log
表,我需要添加用户的activities
(特别是与安全相关的)。
例如,如果用户更改了密码或登录软件,我会将"password changed"
或"user logged in"
字符串添加到表中。我想我应该按照here
password change action
我是否正确,相应的行动是什么?它是由XAF提供的吗?我在documentation找不到任何内容。事实上,我也不知道如何将它添加到表中,直到现在我才将一些文本记录到txt
文件中。
答案 0 :(得分:2)
就像@ shamp00上面所说的那样,Audit Trail Module已经很好地做到了这一点。启用审计跟踪模块会记录所有内容,因此您只需编写代码以显示所需信息:-)
现在很遗憾,密码属性是只读的,因此无法访问,但您可以监控所有其他用户更改,包括密码重置,因为这会触发“下次登录时更改密码”属性的更改。
你需要做的就是
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的部分。