首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据AD检查IsInRole

根据AD检查IsInRole
EN

Stack Overflow用户
提问于 2011-02-18 23:01:26
回答 2查看 901关注 0票数 0

我最近试着使用WindowsPrincipal,但我真的很困惑。我使用以下代码片段:

代码语言:javascript
复制
WindowsPrincipal principal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
MessageBox.Show(Thread.CurrentPrincipal.IsInRole("MyDomain\\Users").ToString());

它返回True,所以没有问题。但我认为这个"IsInRole“检查对Active Directory有效。但是,当我拔下网线时,它仍然返回true。怎么会这样?有没有什么简单的方法来检查登录的用户是否在AD的特定域中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-18 23:11:44

Active Directory凭据可以缓存在本地系统上,包括角色成员身份(以支持组策略实施)。您可以按照MSDN KB Cached Domain Logon Information中的说明关闭凭据缓存,但我不确定这是否会清除缓存。虽然我不能确认(因为我当前不在具有缓存凭据的系统上),但我相信它们是作为散列存储在注册表项HKEY_LOCAL_MACHINE\SECURITY\CACHE\下的标记为"NLx“的值中,其中x是整数。

票数 1
EN

Stack Overflow用户

发布于 2011-02-18 23:08:23

您的代码很好,Windows比我们想象的要智能一些,即使您断开网络电缆,Windows也会缓存用户组成员身份,实际上,如果您在AD域中,您也可以拔下电缆并仍然登录,因为所有内容都缓存在本地。

如果你想检查它是如何工作的,试着拔掉电缆,在断开连接时检查另一个组成员身份,它将是假的,然后将你的用户添加到服务器上的另一个组中,只有在你再次将你的机器连接到网络并进行注销/登录后,这个检查才会通过。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5042847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档