@shamp00 が上で述べたように、監査証跡モジュールはこれをすでに非常にうまく行っています。監査証跡モジュールを有効にすると、すべてがログに記録されるため、コードを記述して必要な情報のみを表示するだけです :-)
残念ながら、パスワード プロパティは読み取り専用であるためアクセスできませんが、パスワードのリセットを含む他のすべてのユーザーの変更を監視できます。これにより、「次回ログオン時にパスワードを変更する」プロパティが変更されるためです。
あなたがする必要があるのは、
- 監査証跡モジュールをプロジェクトに追加します。
- 監査したい特定のオブジェクトにこのスニペットを追加します
private XPCollection<AuditDataItemPersistent> userAuditTrail;
public XPCollection<AuditDataItemPersistent> UserAuditTrail
{
get
{
if(userAuditTrail == null)
{
userAuditTrail = AuditedObjectWeakReference.GetAuditTrail(Session, user);
}
return userAuditTrail;
}
}
DevExpress.ExpressApp.Security.Strategy.SecuritySystemUser
これを機能させるために、SecuritySystemUser を拡張して完全な従業員の詳細 (名、姓、住所の詳細) を追加するだけでなく、監査も追加する必要があるため、継承元の employee というオブジェクトを作成しました。現在、パスワード プロパティは読み取り専用であるため、その変更を監査することはできません。Devexpress Universal を使用しているため、ソース コードがあるので、気に入らない部分を変更して、必要に応じて再コンパイルできます。以下のスニペットを「パスワード変更アクション」に追加することを検討してください。
AuditDataItem customDataItem = new AuditDataItem(myAuditedObject, null, "CustomOldValue", "CustomNewValue", AuditOperationType.CustomData); AuditTrailService.Instance.AddCustomAuditData(mySession, customDataItem); AuditTrailService.Instance.SaveAuditData(mySession);
次に、タイムスタンプについては、ログに記録する各イベント (ログオンなど) のコントローラーを拡張し、上記のスニペットを使用して監査ログに時刻を追加できます。
これがお役に立てば幸いです。私はそれを調べ続けます。