火星wap建站python创建网页

news/2025/9/22 20:29:19/文章来源:
火星wap建站,python创建网页,文库网站开发教程,wordpress发送邮箱验证码做企业应用开发难免会跟 AD 打交道#xff0c;在之前的 dotNET FrameWork 时代#xff0c;通常使用 System.DirectoryServices 的相关类来操作 AD #xff0c;在 dotNET Core 中没有这个命名空间#xff0c;在张善友大佬的推荐下#xff0c;知道了 Novell.Directory.Ldap。… 做企业应用开发难免会跟 AD 打交道在之前的 dotNET FrameWork 时代通常使用 System.DirectoryServices 的相关类来操作 AD 在 dotNET Core 中没有这个命名空间在张善友大佬的推荐下知道了 Novell.Directory.Ldap。操作 AD通常有两种常见的场景将第三方数据源数据人事系统同步到 AD 中将 AD 数据同步到自己的数据库中本文将介绍在 dotNET Core 中使用 Novell.Directory.Ldap 将 AD 数据同步到数据库的操作。环境dotNET Core2.1Novell.Directory.Ldap.NETStandard2_03.1.0安装 Novell.Directory.Ldap 包在 VS2019 中添加 NuGet 包引用如下图安装完成后在类中添加using Novell.Directory.Ldap;引用便可使用相关的 API 方法了。同步思路1、连接 AD基本操作同步方法public bool Sync() {ADConnect();if (_connection  null){throw new Exception(AD连接错误请确认AD相关信息配置正确!);}bool result  true;ListLdapEntry entryList  this.GetRootEntries(_adPaths, _adHost);_org  new Org();_user  new User();Org rootOrg  _org.GetRootOrg();foreach (LdapEntry entry in entryList){SyncDirectoryEntry(entry, rootOrg, entry);}return result; } 连接 ADpublic bool ADConnect() {_adHost  192.168.16.160;string adAdminUserName  administrator;string adAdminPassword  123456;_adPaths new string[] { OUoec2003,DCCOM,DCcn };if ((string.IsNullOrEmpty(_adHost) || string.IsNullOrEmpty(adAdminUserName)) ||string.IsNullOrEmpty(adAdminPassword)){return false;}try{_connection  new LdapConnection();_connection.Connect(_adHost, LdapConnection.DEFAULT_PORT);_connection.Bind(adAdminUserName, adAdminPassword);}catch{return false;}return true; } 递归操作private void SyncDirectoryEntry(LdapEntry rootEntry, Org parentOrg, LdapEntry currentEntry) {ListLdapEntry entryList  currentEntry.Children(_connection);foreach (LdapEntry entry in entryList){if (entry.IsOrganizationalUnit()){Org org  this.SyncOrgFromEntry(rootEntry, parentOrg, entry);this.SyncDirectoryEntry(rootEntry, org, entry);}else if (entry.IsUser()){this.SyncUserFromEntry(rootEntry, parentOrg, entry);}} } 同步部门private Org SyncOrgFromEntry(LdapEntry rootEntry, Org parentOrg, LdapEntry entry) {string orgId  entry.Guid().ToLower();Org org  this._org.GetOrgById(orgId) as Org;if (org ! null){if (entry.ContainsAttr(ou)){org.Name  entry.getAttribute(ou).StringValue  string.Empty;}//设置其他属性的值_org.UpdateOrg(org);return org;}org  new Org{Id  orgId,ParentId  parentOrg.Id,};//设置其他属性的值this._org.AddOrg(org);return org; } 同步用户private User SyncUserFromEntry(LdapEntry rootEntry, Org parentOrg, LdapEntry entry) {string userId  entry.Guid().ToLower();User user  this._user.GetUserById(userId);if (user ! null){user.ParentId  parentOrg.Id;//设置其他属性的值this._user.UpdateUser(user);return user;}user  new User{Id  userId,ParentId  parentOrg.Id};//设置其他属性的值this._user.AddUser(user);return user; } 辅助方法为了方便代码的编写和复用将一些操作提取到了扩展方法中。获取 Entry 的 GUIDpublic static string Guid(this LdapEntry entry) {var bytes  (byte[])(entry.getAttribute(objectGUID).ByteValue as object);var guid  new Guid(bytes);return guid.ToString(); } 获取 Entry 的 子级public static ListLdapEntry Children(this LdapEntry entry, LdapConnection connection) {//string filter  ((objectclassuser));ListLdapEntry entryList  new ListLdapEntry();LdapSearchResults lsc  connection.Search(entry.DN, LdapConnection.SCOPE_ONE, objectClass*, null, false);if (lsc  null) return entryList;while (lsc.HasMore()){LdapEntry nextEntry  null;try{nextEntry  lsc.Next();if (nextEntry.IsUser() || nextEntry.IsOrganizationalUnit()){entryList.Add(nextEntry);}}catch (LdapException e){continue;}}return entryList; } 判断 Entry 是否为用户public static bool IsUser(this LdapEntry entry) {return entry.ObjectClass().Contains(user); } 判断 Entry 是否为部门public static bool IsOrganizationalUnit(this LdapEntry entry) {return entry.ObjectClass().Contains(organizationalunit); } 获取 Entry 的修改时间public static DateTime WhenChanged(this LdapEntry entry) {string value  entry.getAttribute(whenChanged).StringValue;if (value.Split(.).Length  1){value  value.Split(.)[0];}DateTime whenChanged  DateTime.ParseExact(value, yyyyMMddHHmmss, System.Globalization.CultureInfo.CurrentCulture);return whenChanged; } 判断 Entry 中属性是否存在public static bool ContainsAttr(this LdapEntry entry, string attrName) {LdapAttribute ldapAttribute  new LdapAttribute(attrName);return entry.getAttributeSet().Contains(ldapAttribute); } 根据名称获取 Entry 中的属性值public static string AttrStringValue(this LdapEntry entry, string attrName) {if (!entry.ContainsAttr(attrName)){return string.Empty;}return entry.getAttribute(attrName).StringValue; } 总结文中没有做更多文字性的介绍可以从下面链接中下载代码进行调试就很容易理解了。参考示例代码https://github.com/oec2003/StudySamples/tree/master/DotNetCoreAdDemo/DotNetCoreAdDemo祝大家国庆假期快乐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四舍六入五成双

四舍六入五成双是一种精确度的计数保留法。这里"四"是小于五的意思,"六"是大于五的意思,"五"是舍入位之后的尾数逢五的话看前一位,奇进偶不进。如1.25保留一位小数,因为2是偶数,所…

织梦制作网站地图大型网站建设制作公司

kali linux 默认ssh是禁止root登录的 为了通过 SSH 进入你的 Kali Linux 系统,你可以有两个不同的选择。第一个选择是创建一个新的非特权用户然后使用它的身份来登录。第二个选择,你可以以 root 用户访问 SSH 。为了实现这件事,需要在SSH 配…

设计网站页面要注意什么公司展厅

pipe函数 管道函数 man pipe #include <unistd.h> int pipe(int pipefd[2]);参数介绍&#xff1a;pipefd读写文件描述符&#xff0c;0-代表读&#xff0c; 1-代表写父子进程实现pipe通信&#xff0c;实现ps aux | grep bash 功能 经常出现的问题&#xff1a; 父进程认为…

商业网站导航怎么做信阳工程建设一体化平台网站

学习使用wps将ppt的页面保存为图片的方法 方案 方案 1、打开ppt&#xff0c;点击文件&#xff0c;另存为&#xff0c;选择文件类型为图片格式&#xff0c;jpg或者png&#xff0c;如下图&#xff1a; 2、点击每张幻灯片

win7电脑做网站主机xml网站地图在线生成工具

跨境商品的采购类型有三种&#xff1a;直邮、保税、一般贸易&#xff0c;而一般贸易的商品已经清关入境了&#xff0c;虽然是跨境商品&#xff0c;但是无需再清关&#xff0c;所以商品详情页无需显示进口税相关信息。 直邮跨境商品显示的进口税信息如下图所示&#xff1a; 保税…

上海找人做网站因脉网站建设公司怎么呀韩国

2019独角兽企业重金招聘Python工程师标准>>> 一、Mybatis介绍 MyBatis是一个支持普通SQL查询&#xff0c;存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和…

丽水公司网站建设绿色郑州网站

一、linux应用程序如何接收参数&#xff1f; 1. argc、argv Linux应用程序执行时&#xff0c;我们往往通过命令行带入参数给程序&#xff0c;比如 ls /dev/ -l 其中参数 /dev/ 、-l都是作为参数传递给命令 ls 应用程序又是如何接收这些参数的&#xff1f; 通常应用程序都…

珠海网站建设推广服务在58做网站推广有用没

一:题目 二:代码 #include <iostream> #include<vector> using namespace std; int main() {/**思路:1.确定dp数组的定义以及下标的含义dp[i][j] 表示的是一条路径到达下标i和j时&#xff0c;的最大值 2.确定dp数组的状态转移公式我们当前位置的最大值其实是由右上…

如何做自动网站课件ppt模板免费下载网站

TTIoT云端物联网组件;面向JAVA;以事件为驱动;为设备提供安全可靠的连接通信能力TTIoT简介TTIOT的Broker采用MQTT协议与设备进行交互,可以应用在数据采集、能源监控、智能生活、智能工业、农业水利等场景;向下提供连接海量设备服务&#xff0c;支撑设备数据采集上云&#xff0c;…

建设实业公司网站设计模板设计企业品牌商标

Matlab编程中函数的重命名方法 在进行matlab编程时候&#xff0c;有时需要根据自己的习惯&#xff0c;需要对函数重命名。本文简要介绍重命名的方法。 一、重命名的方法 通过和赋值号实现&#xff0c;如下所示&#xff1a; 新函数名原函数名二、具体举例 clc clear all %将…

怎样构建网站怎么在百度网站上做自己的网站

一、对于string类型变量的连接&#xff0c;可以直接用“”或者“”来进行字符串的直接连接 string a"1"; string b"2"; string c; cab"12"; string操作符两边既可以都是string类型&#xff0c;也可是string与char类型 注意&#xff1a; (1)“”…

借助 Apache Phoenix,使用标准 SQL 和 JDBC 接口来操作 HBase

注:本篇博客是对 https://www.cnblogs.com/shanheyongmu/p/15661006.html 这篇博客的补充与实践。 在此膜拜大佬!d(゚∀゚d)点赞!点击查看代码package com.example;import org.springframework.web.bind.annotatio…

LeetCode:15.转轮数组 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

sem网络营销重庆seo研究中心

来源&#xff1a;知乎&#xff08;zibuyu9&#xff09;作者&#xff1a;韩旭、高天宇、刘知远最近几年深度学习引发的人工智能浪潮席卷全球&#xff0c;在互联网普及带来的海量数据资源和摩尔定律支配下飞速提升的算力资源双重加持下&#xff0c;深度学习深入影响了自然语言处理…

长春做网站长春网站设计浙江省龙泉市建设局网站

目录 一、UART 概述二、UART 模块相关API三、UART 接口调用实例四、UART HDF驱动开发4.1、开发步骤(待续...) 坚持就有收获 一、UART 概述 UART 是通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;的缩写&#xff0c;是通用串行数据总…

专业建设网站技术wordpress数据迁移

文章目录 &#x1f56e;原始图像&#x1f56e;改变图像大小&#x1f56e;使图像靠左 在 jupyter notebook中&#xff0c;导入的图片过大&#xff0c;想要改变图像的大小 &#x1f56e;原始图像 &#x1f56e;改变图像大小 复制小括号里面的内容到src后面&#xff0c;满足<…

东莞购物网站建设工商注册是什么意思

最近看了个HS的时间显示的例子&#xff0c;顺便学习了一下这个lua定义函数的方法&#xff0c;被折腾了许久&#xff0c;最后竟然是gpt解答了。 定义方式 -- 定义一个对象 local myObject {isVisible false, }-- 定义对象的方法 function myObject:toggleShow()self.isVisibl…

珠宝首饰网站建设策划书公司建品牌网站好

观察题目我们发现从前往后推会有条件判断&#xff0c;不容易写出来。所以就从后往前推。 也就是说后面的状态已经是推出来了&#xff0c;保证是最大值。 //数字三角形 #include<iostream> using namespace std; const int N 510; int f[N][N], n;int main() {ios::sync…

汝城网站建设公司东海县建网站

软件的特征 抽象&#xff1a; 不可触摸&#xff0c;逻辑实体&#xff0c;可记录&#xff0c;但看不到复制成本低&#xff1a;不受物质材料的限制&#xff0c;不受物理定律或加工过程的制约&#xff0c;与开发成本相比&#xff0c;复制成本很低无折旧、受硬件制约、未完全摆脱手…

深圳坪山住房和建设局网站如何做网页快捷方式

Check Point Sofrware Technologies很可能成为下一个会产生收购案的主流安全厂商&#xff0c;首席执行官Gil Shwed在该公司第二季度财报电话会议上这样表示。 “我们正在积极地寻求收购目标&#xff0c;期待无论是大规模的还是小规模的扩张&#xff0c;”Shwed表示。“我们在并…