0

現在、監査証跡を実装するソフトウェアをC#で開発していますが、マルチユーザーが使用する場合、どのユーザーが更新/挿入/削除を実装するかを知ることはできません。私のユーザーテーブルは次のようになります。

create table Users(
    userID varchar(20) not null,
    userPass varchar(20) not null,
    userFName varchar(25) not null,
    userLName varchar(25) not null,
    userMName varchar(25) not null,
    secretAnswer varchar(40),
    userStatus int default 0,
    primary key(userID)
)

userStatusは、ユーザーがログインしているかどうかを確認します。デフォルトでは0であり、ログインしていないことを意味します。ログインすると、1に更新されます。これは、ユーザーがソフトウェアの現在のユーザーであることを意味します。 。だから、誰がログインしているかを確認するために、私のコードは

select userID from Users where userStatus = 1

その後、すべてのユーザーのすべてのuserStatusは、ログアウトするか、ソフトウェアが閉じられると、0にリセットされます。ただし、このロジックは個々のユーザーにのみ適用できます。更新/挿入/削除を実装するユーザーを追跡するにはどうすればよいですか?私はC#を使用しています。よろしくお願いします。

4

1 に答える 1

0

ログに書き込む前にコードを確認すると、ログインに基づいてコードを呼び出している現在のユーザーを追跡できます。これを行うと、コードのどこに移動するかを決定する必要がある現在のユーザーが返されます。それを配置します

var currentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split(
    new [] {"\\"}, 
        StringSplitOptions.RemoveEmptyEntries)[1];

Domainこれはあなたが見ることができるのと同じコードです文字列をとに分割しますUser

var currentUser2 = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
var SplitUser = currentUser2.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
var domain = SplitUser[0];
var domainUser = SplitUser[1];
于 2013-03-25T13:31:37.673 に答える