http://msdn.microsoft.com/zh-tw/library/system.directoryservices(v=VS.80).aspx
這裡一定要先了解一下
工作需求上要使用 AD帳號作為認證,找了一下實作,還挺不錯玩的
Asp.Net
2個 Textbox 跟1 個Button 就搞定了
|
1 |
<span style="color: #606060" id="lnum1"> 1:</span> <span style="color: #0000ff"><</span><span style="color: #800000">asp:TextBox</span> <span style="color: #ff0000">ID</span><span style="color: #0000ff">="TextBox1"</span> <span style="color: #ff0000">runat</span><span style="color: #0000ff">="server"</span><span style="color: #0000ff">></</span><span style="color: #800000">asp:TextBox</span><span style="color: #0000ff">></span> |
|
1 |
<span style="color: #606060" id="lnum2"> 2:</span> <span style="color: #0000ff"><</span><span style="color: #800000">br</span> <span style="color: #0000ff">/></span> |
|
1 |
<span style="color: #606060" id="lnum3"> 3:</span> <span style="color: #0000ff"><</span><span style="color: #800000">asp:TextBox</span> <span style="color: #ff0000">ID</span><span style="color: #0000ff">="TextBox2"</span> <span style="color: #ff0000">TextMode</span><span style="color: #0000ff">="Password"</span> <span style="color: #ff0000">runat</span><span style="color: #0000ff">="server"</span><span style="color: #0000ff">></</span><span style="color: #800000">asp:TextBox</span><span style="color: #0000ff">></span> |
|
1 |
<span style="color: #606060" id="lnum4"> 4:</span> <span style="color: #0000ff"><</span><span style="color: #800000">br</span> <span style="color: #0000ff">/></span> |
|
1 |
<span style="color: #606060" id="lnum5"> 5:</span> <span style="color: #0000ff"><</span><span style="color: #800000">asp:Button</span> <span style="color: #ff0000">ID</span><span style="color: #0000ff">="Button1"</span> <span style="color: #ff0000">runat</span><span style="color: #0000ff">="server"</span> <span style="color: #ff0000">onclick</span><span style="color: #0000ff">="Button1_Click"</span> <span style="color: #ff0000">Text</span><span style="color: #0000ff">="Button"</span> <span style="color: #0000ff">/></span> |
C#
請使用 using System.DirectoryServices; 若找不到請至方案總管新增參考, 找 .NET 裡的System.DirectorServices
|
1 |
<span style="color: #606060" id="lnum1"> 1:</span> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> Button1_Click(<span style="color: #0000ff">object</span> sender, EventArgs e) |
|
1 |
<span style="color: #606060" id="lnum2"> 2:</span> { |
|
1 |
<span style="color: #606060" id="lnum3"> 3:</span> <span style="color: #0000ff">string</span> ad_id = TextBox1.Text; |
|
1 |
<span style="color: #606060" id="lnum4"> 4:</span> <span style="color: #0000ff">string</span> ad_ps = TextBox2.Text; |
|
1 |
<span style="color: #606060" id="lnum5"> 5:</span> DirectoryEntry ent = <span style="color: #0000ff">new</span> DirectoryEntry(<span style="color: #006080">"LDAP://dc=abc,dc=com,dc=tw"</span>,ad_id,ad_ps); |
|
1 |
<span style="color: #606060" id="lnum6"> 6:</span> <span style="color: #008000">//網域名稱 , 以 "."為分隔 ,接續帳號,密碼</span> |
|
1 |
<span style="color: #606060" id="lnum7"> 7:</span> DirectorySearcher ds = <span style="color: #0000ff">new</span> DirectorySearcher(ent); <span style="color: #008000">//建立 搜尋 AD的物件</span> |
|
1 |
<span style="color: #606060" id="lnum8"> 8:</span> ds.Filter = <span style="color: #006080">"(sAMAccountName="</span> + ad_id + <span style="color: #006080">")"</span>; <span style="color: #008000">//設立條件 , 這裡是找帳號與輸入ID一樣</span> |
|
1 |
<span style="color: #606060" id="lnum9"> 9:</span> ds.PropertiesToLoad.Add(<span style="color: #006080">"displayName"</span>); <span style="color: #008000">//搜尋期間要擷取的屬性清單</span> |
|
1 |
<span style="color: #606060" id="lnum10"> 10:</span> ds.SearchScope = SearchScope.Subtree; <span style="color: #008000">//伺服器觀察的搜尋範圍</span> |
|
1 |
<span style="color: #606060" id="lnum11"> 11:</span> <span style="color: #0000ff">try</span> |
|
1 |
<span style="color: #606060" id="lnum12"> 12:</span> { |
|
1 |
<span style="color: #606060" id="lnum13"> 13:</span> SearchResult sr = ds.FindOne(); <span style="color: #008000">//搜尋到的第一個物年件</span> |
|
1 |
<span style="color: #606060" id="lnum14"> 14:</span> |
|
1 |
<span style="color: #606060" id="lnum15"> 15:</span> <span style="color: #0000ff">if</span> (sr == <span style="color: #0000ff">null</span>) |
|
1 |
<span style="color: #606060" id="lnum16"> 16:</span> { |
|
1 |
<span style="color: #606060" id="lnum17"> 17:</span> Response.Write(<span style="color: #006080">"找不到帳號"</span>); |
|
1 |
<span style="color: #606060" id="lnum18"> 18:</span> } |
|
1 |
<span style="color: #606060" id="lnum19"> 19:</span> <span style="color: #0000ff">else</span> |
|
1 |
<span style="color: #606060" id="lnum20"> 20:</span> { |
|
1 |
<span style="color: #606060" id="lnum21"> 21:</span> <span style="color: #0000ff">string</span> atest = sr.GetDirectoryEntry().Properties[<span style="color: #006080">"displayName"</span>].Value.ToString(); <span style="color: #008000">//取出顯示名稱</span> |
|
1 |
<span style="color: #606060" id="lnum22"> 22:</span> Response.Write(<span style="color: #006080">"你的帳號是: "</span>+atest); |
|
1 |
<span style="color: #606060" id="lnum23"> 23:</span> } |
|
1 |
<span style="color: #606060" id="lnum24"> 24:</span> } |
|
1 |
<span style="color: #606060" id="lnum25"> 25:</span> <span style="color: #0000ff">catch</span> (Exception ex) |
|
1 |
<span style="color: #606060" id="lnum26"> 26:</span> { |
|
1 |
<span style="color: #606060" id="lnum27"> 27:</span> Response.Write(<span style="color: #006080">"密碼錯誤 ,或無此帳號"</span>); |
|
1 |
<span style="color: #606060" id="lnum28"> 28:</span> } |
|
1 |
<span style="color: #606060" id="lnum29"> 29:</span> |
|
1 |
<span style="color: #606060" id="lnum30"> 30:</span> } |
(Visited 21 times, 1 visits today)