我有一个通过AD进行身份验证的Asp.net MVC项目。我想在表中存储当前登录用户的审计信息。我应该在数据库中存储什么?我目前正在为我的成员资格和角色提供者使用SamAccountName。我应该用这个吗?我应该使用更冗长、更现代的UserPrincipalName吗?如果我们最终使用多个域呢?
那Guid呢?Guid似乎是显而易见的选择,但我对此一无所知。为什么它可以为空?这个值会改变吗?它是用来做什么的?
更新
根据SID vs. GUID的说法。
使用SID而不是GUID的原因是为了向后兼容。Windows NT使用SID来标识资源上ACL中的用户和组。
如果您将用户移动到新域,SID实际上将发生变化,GUID将保持不变。在我看来,除非您打算在NT4 AD服务器上进行身份验证,否则GUID是可行的。
我不知道该怎么做,因为我两天内都不能接受我自己的答案。最深入的解释胜出?
发布于 2009-12-16 08:38:26
根据SID vs. GUID的说法。
使用SID而不是GUID的原因是为了向后兼容。Windows NT使用SID来标识资源上ACL中的用户和组。
话虽如此,我还是决定使用GUID。如果您将用户移动到新域,SID实际上将发生变化,GUID将保持不变。只要您不打算在NT4 AD服务器上运行您的应用程序,GUID就是最佳选择。
发布于 2009-12-16 08:11:59
您可能希望使用SID --这是操作系统本身在大多数情况下使用的。SID在域或工作组中也是唯一的。
用户名本身的问题是它是可以更改的,而SID是固定的。
发布于 2009-12-16 09:26:12
如果您正在使用Windows (或Webforms )和ASP.NET身份验证,为什么不直接使用从该属性获得的用户名:
HttpContext.Current.User.Identity.Name
这将返回用户的域/用户名。我曾经在公司web应用程序上工作过,这些应用程序将其用于审计目的。我很想知道您是否认为这对于您的目的来说还不够独特。
此外,我不确定为什么要存储用户的SID或GUID,因为在查看审核日志时,与域/用户相比,它很难读取。
https://stackoverflow.com/questions/1911315
复制相似问题