我在用户创建存储在数据库中的报告的网站上使用 Windows 身份验证。当我保存报告时,我想知道是哪个用户填写的,所以我一直将他们的 WindowsIdentity 的 SecurityIdentifier 存储在数据库中,以识别哪个用户填写了报告。这是我用来获取当前 Windows 用户的 SecurityIdentifier 值的代码:
public static string GetCurrentUserSID()
{
IPrincipal princ = HttpContext.Current.User;
WindowsIdentity winId = princ.Identity as WindowsIdentity;
SecurityIdentifier si = winId.User;
string securityIdentifierValue = winId.User.Value;
return securityIdentifierValue;
}
问题
我是否通过将 SecurityIdentifier 存储在数据库中而不是用户名或其他值来做正确的事情?在这种情况下遵循的最佳做法是什么?
如何从我存储的 SecurityIdentifier 值中获取用户的用户名?