在企业的众多应用软件中,每个用户对每个软件都需要记住登录的帐号和密码。时间久了,会忘记或搞混。管理人员在用户管理时也需要挨个软件去维护。确实很麻烦。解决的方法是要有统一的用户管理,同一个帐号可以登录多个软件。创建域用户是很好的解决方法。

一、用户的域验证,用户登录软件时,系统先把帐号和密码发送到域服务器进行验证,通过后才能使用软件。

创建 DirectoryEntry对象, 参数:域名(domain) 形如 xxxxx.com,域用户(domainAndUsername)形如 xxxxx.com\user ,域密码(pwd),域用户(user)= 用户登录帐号

C#代码:

               DirectoryEntry entry = new DirectoryEntry(string.Format("LDAP://{0}",domain), domainAndUsername,pwd);string r = "ok";try{DirectorySearcher search = new DirectorySearcher(entry); //创建DirectoryEntry对象的搜索对象
                  search.Filter = "(SAMAccountName=" +user + ")";  //过滤条件为登录帐号=user
                   SearchResult result = search.FindOne(); //查找第一个
                   if (null == result)   //没找到
                     {r = "cancel";}}catch (Exception ex){r = ex.Message;}return r;

二、列举域控制器下的所有用户及组织

本例列举某公司下的组织及用户(组织结构:公司->部门->用户),运行软件的电脑须加入域才能读取域用户信息,如果是web,则发布的服务器也须加入域中。

//domain 域名称 user 域上的用户, pwd 域上的用户密码,root 公司名称 ou=root 表示该公司下的组织及用户
StringBuilder sb = new StringBuilder();try{    DirectoryEntry entry = new DirectoryEntry(string.Format("LDAP://{0}/OU={1},DC={2},DC={3}",domain, root, domain.Split('.')[0], domain.Split('.')[1]), domain + @"\" + user, pwd);               DirectorySearcher mySearcher = new DirectorySearcher(entry);              mySearcher.Filter = ("(objectClass=organizationalUnit)");  // 查找条件是entry 下的部门
       sb.Append("[{id:'0',pid:null,text:'" + root + "',expand:true}");                int i = 1;               foreach (SearchResult resEnt in mySearcher.FindAll()) //遍历所有部门
       {                    string _a = resEnt.GetDirectoryEntry().Name.Split('=')[1];                    if (_a != root)                   {                       sb.Append(",{id:'" + i.ToString() + "',pid:'0',text:'" + _a + "'}");                        DirectorySearcher m1 = new DirectorySearcher(resEnt.GetDirectoryEntry());  //查找用户对象
              m1.Filter = ("(objectClass=user)");  //查找条件是所有用户
              foreach (SearchResult r1 in m1.FindAll())  //遍历该部门下的所有用户
              {                            sb.Append(",{id:'" + r1.GetDirectoryEntry().Properties["sAMAccountName"][0].ToString()+ "',pid:'" + i.ToString() + "',text:'" + r1.GetDirectoryEntry().Properties["Name"][0].ToString() + "'}");}i++;                  }             }               sb.Append("]");

三、把返回的用户信息以树形方式显示在html 上

<div id="user" class="gtreeselect"  data-options="{poupuWidth:240,leafNode:true,width:210,onChange:set}" ></div>
     $(function () {jgui.post("/Data/getaduser", { domain: "gxdonta.com", user: "admin", pwd: "123456", root: encodeURIComponent("XXXXXX有限公司") },function (text) {jgui.get('user').setData(jgui.parseJSON(text));});}); 

asp.net 下利用DirectoryEntry验证用户及获取域控制器下的用户结构信息相关推荐

  1. 域服务器批量修改用户密码,Windows域控制器批量创建用户

    Windows域控制器批量创建用户 猫先生 • 2019 年 06 月 05 日 之前做过VDI的项目,一百多个桌面,需要一百多个用户,我刚开始手动创建了5个,觉得这不是IT人干的事,要高效.网上找了 ...

  2. 如何查看域控计算机是哪个用户登陆,查看域控制器上登录用户

    如何查看当前域控登录验证的用户?域内多台域控制器,如何查看某台域控制器上当前登录的用户或计算机?系统自动的工具好像没有实现此需求的办法,有无像脚本或者其他的思路来满足此需求呢?是指验证过的用户或计算机 ...

  3. EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题

    小故事 在开始讲这篇文章之前,我们来说一个小故事,纯素虚构(真实的存钱逻辑并非如此) 小刘发工资后,赶忙拿着现金去银行,准备把钱存起来,而与此同时,小刘的老婆刘嫂知道小刘的品性,知道他发工资的日子,也 ...

  4. 如何查看/统计当前AD域控制器的活动用户

    最近公司想知道某台AD域控制器上当前连接了多少活动用户? 此前个人只知道以下不是非常完善且统计起来比较麻烦的方法: 方法1:查看共享会话数.(不完全准确) 方法2:查看当前的DNS记录.(这种方法统计 ...

  5. 域控如何查看计算机在线,查看域控制器上登录用户

    如何查看当前域控登录验证的用户?域内多台域控制器,如何查看某台域控制器上当前登录的用户或计算机?系统自动的工具好像没有实现此需求的办法,有无像脚本或者其他的思路来满足此需求呢?是指验证过的用户或计算机 ...

  6. 怎么禁用域控下的计算机配置,怎样从Windows域环境下禁用USB口设备

    我们来详解一下Windows识别USB设备主要通过两个文件,一个是Usbstor.pnf.另外一个是Usbstor.inf,当在电脑第一次使用USB设备之前禁用这两个文件即可达到我们的目标. 1.打开 ...

  7. android资源文件下的图片绝对路径,如何获取drawable目录下的图片绝对路径

    Public DNS (公共域名解析服务) 114DNS 服务IP:114.114.114.114, 114.114.115.115 拦截 钓鱼病毒木马网站:114.114.114.119, 114. ...

  8. anaconda下利用git维护github仓库

    anaconda下利用git维护github仓库 说实话,windows下利用github客户端维护github仓库是非常方便的,唯一不方便的是github客户端的下载安装,每次换电脑或重装系统都要装 ...

  9. PyCharm下利用pyqt对话框打开图片,显示

    PyCharm下利用pyqt对话框打开图片,显示 PyCharm下利用pyqt对话框打开图片显示 1安装PyCharm Python PyQt5 Pycharm配置Pyqt 1添加Qtdesigner ...

  10. 利用单片机实现天气服务器获取指定位置天气数据

    大家好,今天主要和大家聊一聊,如何利用单片机从心知天气服务器上获取到指定位置的天气数据,咱们先来了解一下心知天气吧!​ 目录 第一:天气数据API 第二.通信原理图以及数据解析 第三.天气数据返回结果 ...

最新文章

  1. “诺奖风向标”沃尔夫奖出炉:数学颁给表示论,物理颁给激光
  2. 皮一皮:现在真是键盘侠的年代阿....
  3. Python爬虫应用实战案例-xpath正则表达式使用方法,爬取精美壁纸
  4. 另一个程序正在使用此文件 进程无法访问 iis
  5. java 手动编译打包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...
  6. c++ 结构体构造函数使用总结 附一道经典模拟题
  7. Linux redhat下安装jdk-6u45-linux-x64.bin
  8. 【新插件发布】AzureAD运维Excel版插件,增删改查快10倍c以上!
  9. python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现
  10. 由项目中的一个小问题所联想到的。
  11. HDU 6336 Matrix from Arrays (杭电多校4E)
  12. Sphinx 使用心得
  13. CRM对于企业管理有哪些突破性价值?
  14. Mac下Eclipse SVN 更换账号
  15. 记一次Openwrt使用ssh连接失败的经验
  16. html编码器是什么意思,编码器是什么意思
  17. 人人网2017暑假实习生招聘-一面
  18. 2022保育员(高级)考试模拟100题及在线模拟考试
  19. X位的有/无符号整数
  20. 从零开始之驱动发开、linux驱动(二十五、framebuffer 子系统框架)

热门文章

  1. Typora下载与安装详解
  2. Java 使用dom4j进行XML解析
  3. Ubuntu下 UltraEdit 破解/显色
  4. GeoGebra数学绘图神器
  5. CS61B+CS170
  6. word中如何替换一些特殊符号
  7. ora01031权限不足linux,ORA-01031:权限不足
  8. 计算机组成原理课程设计报告,计算机组成原理课程设计报告.doc
  9. linux中如何编译成bin文件,gcc 如何编译成bin文件
  10. 单片机矩阵键盘扫描程序c语言,51单片机矩阵键盘扫描程序