是公司局域网么?感觉你的描述有点不清楚。 如果是公司局域网其实没必要AD验证。 一般AD验证的用法是用户可以使用网域的账号密码直接登录你提供的登录页面。 后台去AD验证进行后续一系列操作。 而你想实现免验证的功能。建议直接验证用户名就好。权限的table还是必要的。 这个完全可以和人事table去串。就像你获取上一级信息一样。 如果没人事table和对应的权限判断依据table.你这一切想法都是没有基础的。获取用户名:以 网域\用户名 为例。Imports System.DirectoryServicesstr.Substring(str.IndexOf("\\", System.StringComparison.Ordinal) + 1).ToUpper().Trim();AD验证: Dim DomainService As New DirectoryEntry With DomainService .Path = ADpath .Username = AppSettings("Domain") & "\" & txtUserId.Value .Password = txtPwd.Value End With Dim DomainSearch As New DirectorySearcher(DomainService) DomainSearch.Filter = "(SAMAccountName=" & txtUserId.Value & ")" DomainSearch.PropertiesToLoad.Add("CN") Try Dim R As SearchResult = DomainSearch.FindOne() ' Dim R As SearchResultCollection = DomainSearch.FindAll() If R Is Nothing Then lblmsg.Visible = True lblmsg.Text = "登錄失敗: ID or Password錯誤!" Else If myService.GetUserData(UCase(txtUserId.Value)) Then Response.Redirect("index.html", False) Else lblmsg.Visible = True lblmsg.Text = "登錄失敗: ID or Password錯誤!" End If End If DomainService.Close() Catch ex As Exception lblmsg.Text = ex.Message.ToString() DomainService.Close() lblmsg.Visible = True lblmsg.Text = "登錄失敗: ID or Password錯誤!" End Try
Dim ADpath As String="LDAP://AD验证服务器IP/dc=网域名称,dc=DC名称" 一般OA team会知道
如果是公司局域网其实没必要AD验证。
一般AD验证的用法是用户可以使用网域的账号密码直接登录你提供的登录页面。
后台去AD验证进行后续一系列操作。
而你想实现免验证的功能。建议直接验证用户名就好。权限的table还是必要的。
这个完全可以和人事table去串。就像你获取上一级信息一样。
如果没人事table和对应的权限判断依据table.你这一切想法都是没有基础的。获取用户名:以 网域\用户名 为例。Imports System.DirectoryServicesstr.Substring(str.IndexOf("\\", System.StringComparison.Ordinal) + 1).ToUpper().Trim();AD验证:
Dim DomainService As New DirectoryEntry
With DomainService
.Path = ADpath
.Username = AppSettings("Domain") & "\" & txtUserId.Value
.Password = txtPwd.Value
End With Dim DomainSearch As New DirectorySearcher(DomainService)
DomainSearch.Filter = "(SAMAccountName=" & txtUserId.Value & ")"
DomainSearch.PropertiesToLoad.Add("CN")
Try
Dim R As SearchResult = DomainSearch.FindOne()
' Dim R As SearchResultCollection = DomainSearch.FindAll()
If R Is Nothing Then
lblmsg.Visible = True
lblmsg.Text = "登錄失敗: ID or Password錯誤!" Else If myService.GetUserData(UCase(txtUserId.Value)) Then
Response.Redirect("index.html", False)
Else
lblmsg.Visible = True
lblmsg.Text = "登錄失敗: ID or Password錯誤!" End If
End If
DomainService.Close()
Catch ex As Exception
lblmsg.Text = ex.Message.ToString()
DomainService.Close()
lblmsg.Visible = True
lblmsg.Text = "登錄失敗: ID or Password錯誤!"
End Try
一般OA team会知道
至于项目流程, 先是当前登陆用户填写申请并提交,右面就由他的上级职位人员去审批,听起来感觉不怎么难,难的是AD里面是否能提供所说的这些功能的可用信息……
至于项目流程, 先是当前登陆用户填写申请并提交,右面就由他的上级职位人员去审批,听起来感觉不怎么难,难的是AD里面是否能提供所说的这些功能的可用信息……用户不愿意维护人事信息,这种情况在我做的项目中非常常见。但你需要进行一个前期的调研,确认对方的AD里面的信息完全支持审批链的关系,以及各个用户是否具有角色或职位的设置(你所说的不同的人员看到不同的菜单,这肯定是需要有一个职位或角色进行对应处理的,而这个信息对方是否存在?)如果满足,你就可以使用后台自动同步的方式(还是建议同步过来,而不是直接去读取域控的信息,举个例子,万一哪天对方要求进行用户名密码认证,那你的更改量是不是属于巨大级的?),如果不满足,那就先同步一部分,剩余的部分仍交给相应的管理人员去维护。我也做过完全同步的情况,但多少还是会存在一点问题的,比如说AD里面的汇报关系中设置的经理,不一定是审批链中的经理,如某个人是部门的行政助理,AD中有可能设置给行政部,设置的汇报经理是行政部的经理,而实际这个助理的汇报经理是这个部门的老板,这样的情况都有可能发生。
http://msdn.microsoft.com/en-us/library/ff647405.aspx