I am using following code :
public class UserIdentity : WindowsIdentity
{
private int userId = -1;
internal FrakoEntitiesConnection context;
private UserIdentity(WindowsIdentity windowsIdentity)
: base(windowsIdentity.Token)
{
}
public new static UserIdentity GetCurrent()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
return new UserIdentity(identity);
}
public string UserName
{
get
{
string result = this.Name;
if (result.LastIndexOf('\\') == -1) return result;
else return result.Remove(0, result.LastIndexOf('\\') + 1);
}
}
public int UserId
{
get
{
if (userId != -1) return userId;
return 0;
}
}
}
It's part of an authentication/security system i use.