在企業(yè)的眾多應(yīng)用軟件中,每個用戶對每個軟件都需要記住登錄的賬號和密碼。時間久了,會忘記或搞混。管理人員在用戶管理時也需要挨個軟件去維護。確實很麻煩。解決的方法是要有統(tǒng)一的用戶管理,同一個賬號可以登錄多個軟件。創(chuàng)建域用戶是很好的解決方法。 一、用戶的域驗證,用戶登錄軟件時,系統(tǒng)先把賬號和密碼發(fā)送到域服務(wù)器進行驗證,通過后才能使用軟件。 創(chuàng)建 DirectoryEntry對象, 參數(shù):域名(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); //創(chuàng)建DirectoryEntry對象的搜索對象
search.Filter = "(SAMAccountName=" +user + ")"; //過濾條件為登錄賬號=user
SearchResult result = search.FindOne(); //查找第一個
if (null == result) //沒找到
{
r = "cancel";
}
}
catch (Exception ex)
{
r = ex.Message;
}
return r;
二、列舉域控制器下的所有用戶及組織 本例列舉某公司下的組織及用戶(組織結(jié)構(gòu):公司->部門->用戶),運行軟件的電腦須加入域才能讀取域用戶信息,如果是web,則發(fā)布的服務(wù)器也須加入域中。
//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));
});
});
|
|