自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入剖析VB.NET驗證LDAP用戶身份

開發(fā) 后端
當(dāng)我們想在程序代碼中實現(xiàn)VB.NET驗證LDAP用戶身份的時候,可以通過以下介紹的內(nèi)容來逐步的完成。在這里就為大家詳細(xì)介紹一下。

VB.NET對于開發(fā)人員來說是一個功能非常強(qiáng)大的開發(fā)語言。它的功能特點非常突出,比如不能夠提供一個安全性非常高的開發(fā)環(huán)境等。前幾天花了兩天時間研究如何實現(xiàn)VB.NET驗證LDAP用戶身份,看了一些java和vb的代碼,碰了不少釘子,試驗再試驗,終于搞定,與大家分享... #t#

首先,我要講的LDAP不是微軟的Active Directory目錄服務(wù),而是運行在SUN One上面的目錄服務(wù)。

請看VB.NET驗證LDAP用戶身份的代碼(部分敏感信息刪節(jié)):

  1. Private Sub btnTest_Click()Sub btnTest_
    Click(ByVal sender As System.Object, 
    ByVal e As System.EventArgs) Handles 
    btnTest.Click  
  2. Dim LoginName As String = txtUser.Text  
  3. Dim LoginPwd As String = txtPwd.Text  
  4. If LoginPwd = "" Then  
  5. txtResult.Text = "* Password can not be blank." 
  6. Exit Sub  
  7. End If  
  8. Dim myDirectorySearcher As DirectorySearcher  
  9. Dim mySearchResult As SearchResult  
  10. Dim myDirectoryEntry As DirectoryEntry  
  11. Dim UserName As String  
  12. txtResult.Text = "" 
  13. Try  
  14. If myDirectoryEntry.Exists("LDAP:
    //ldapserver.com/
    uid=" & LoginName & ",
    ou=people,ou=intranet,dc=yourdomainname,
    dc=com") Then  
  15. Try  
  16. myDirectoryEntry = New DirectoryEntry
    ("LDAP://ldapserver.com/
    ou=people,
    ou=intranet,dc=yourdomainname,dc=com", 
    "
    uid=" & LoginName & ",ou=people,ou=intranet,
    dc=yourdomainname,dc=com", LoginPwd, 
    AuthenticationTypes.ServerBind)  
  17. myDirectorySearcher = New Directory
    Searcher(myDirectoryEntry)  
  18. myDirectorySearcher.Filter = "
    (uid="
     & txtUser.Text & ")"  
  19. myDirectorySearcher.PropertiesToLoad.
    Add("DisplayLastName")  
  20. myDirectorySearcher.PropertiesToLoad.
    Add("DisplayFirstName")  
  21. mySearchResult = myDirectorySearcher.FindOne  
  22. If mySearchResult Is Nothing Then  
  23. txtResult.Text += "* Login failed."  
  24. Else  
  25. txtResult.Text += ">>> Login passed!" & vbCrLf  
  26. UserName = mySearchResult.GetDirectory
    Entry().Properties("DisplayFirstName").
    Value & " " & mySearchResult.GetDirectory
    Entry().Properties("DisplayLastName").Value  
  27. txtResult.Text += UserName & vbCrLf  
  28. End If  
  29. Catch ex As Exception  
  30. txtResult.Text += "* Login failed." & 
    vbCrLf & ex.Message  
  31. End Try  
  32. Else  
  33. txtResult.Text += "* Invalid user login name."  
  34. End If  
  35. Catch ex As Exception  
  36. txtResult.Text += "* Can not access the 
    LDAP server." & vbCrLf & ex.Message  
  37. End Try  
  38. End Sub 

這里要說明一下:

1、必須檢驗密碼不能為空,否則會造成驗證有誤,即空密碼能通過驗證,不知道為什么。

2、LDAP://......這最前面的四個字母LDAP必須大寫!否則報未知錯誤,不知道為什么,還得我走了一段彎路。

3、ldapserver.com需要替換成LDAP服務(wù)器的地址。

4、LDAP://......地址后面的參數(shù),要根據(jù)你要訪問的LDAP的設(shè)置而定。

5、如果密碼不對,會引發(fā)異常,所以我在異常處理中捕獲,但是不知道這樣是否正確。

6、If mySearchResult Is Nothing Then 這句我覺得是廢話,好像怎么也不會為True,如果密碼不對,會引發(fā)異常的,但是不放心還是加上這句,可能是我的判斷邏輯有問題。

總之,這段VB.NET驗證LDAP用戶身份的代碼肯定不是最***的代碼,但是確實是可以完成任務(wù)的代碼,歡迎大家指正。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2009-10-28 10:15:48

VB.NET框架類庫

2009-10-12 16:51:28

VB.NET使用Ora

2009-10-21 16:00:26

VB.NET CASE

2009-10-23 13:14:38

2009-10-13 15:09:19

VB.NET使用Tre

2009-11-02 16:22:16

VB.NET面向?qū)ο?/a>

2010-01-08 10:21:38

VB.NET Cont

2010-01-08 16:10:05

VB.NET讀寫文本文

2010-01-12 15:21:48

VB.NET權(quán)限控制

2009-10-21 10:05:30

VB.NET運行環(huán)境

2009-10-29 10:45:01

VB.NET設(shè)置控件

2009-10-29 11:41:27

VB.NET寫Obje

2010-01-12 11:47:09

VB.NET可選參數(shù)

2009-10-15 17:50:48

VB.NET調(diào)用API

2010-01-21 12:55:08

VB.NET對象序列

2010-01-14 14:21:07

2010-01-22 15:37:02

VB.NET監(jiān)控類

2009-10-14 14:19:00

VB.NET創(chuàng)建表示層

2009-11-03 13:33:39

VB.NET對象列表

2009-10-29 16:23:42

VB.NET實現(xiàn)IEn
點贊
收藏

51CTO技術(shù)棧公眾號