解决方案 »

  1.   

    是公司局域网么?感觉你的描述有点不清楚。
    如果是公司局域网其实没必要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
      

  2.   

    Dim ADpath As String="LDAP://AD验证服务器IP/dc=网域名称,dc=DC名称"
    一般OA team会知道
      

  3.   

    AD仅作身份验证,但后台再加一个同步AD的数据信息到数据表的一个功能,毕竟一套系统中,AD能提供的信息还非常少,并且还受限于AD的管理,因此如果需要去取审批关系等信息,还是直接进入数据表去获取。另外,我们曾经维护过一套系统,这套系统过分地去读取AD的信息,甚至有着将域控读死机的案例。因此同步至数据表以后,维护方便、读取速度也快。
      

  4.   

    谢谢您的耐心回复,不过客户不想做用户维护,就想通过AD用户信息,直接进入系统。但是,系统菜单还要做不同职位的权限控制,比如说销售人员看到的菜单展示可能就和大区经理看到不一样…… 
    至于项目流程, 先是当前登陆用户填写申请并提交,右面就由他的上级职位人员去审批,听起来感觉不怎么难,难的是AD里面是否能提供所说的这些功能的可用信息……
      

  5.   

    谢谢您的耐心回复,不过客户不想做用户维护,就想通过AD用户信息,直接进入系统。但是,系统菜单还要做不同职位的权限控制,比如说销售人员看到的菜单展示可能就和大区经理看到不一样…… 
    至于项目流程, 先是当前登陆用户填写申请并提交,右面就由他的上级职位人员去审批,听起来感觉不怎么难,难的是AD里面是否能提供所说的这些功能的可用信息……用户不愿意维护人事信息,这种情况在我做的项目中非常常见。但你需要进行一个前期的调研,确认对方的AD里面的信息完全支持审批链的关系,以及各个用户是否具有角色或职位的设置(你所说的不同的人员看到不同的菜单,这肯定是需要有一个职位或角色进行对应处理的,而这个信息对方是否存在?)如果满足,你就可以使用后台自动同步的方式(还是建议同步过来,而不是直接去读取域控的信息,举个例子,万一哪天对方要求进行用户名密码认证,那你的更改量是不是属于巨大级的?),如果不满足,那就先同步一部分,剩余的部分仍交给相应的管理人员去维护。我也做过完全同步的情况,但多少还是会存在一点问题的,比如说AD里面的汇报关系中设置的经理,不一定是审批链中的经理,如某个人是部门的行政助理,AD中有可能设置给行政部,设置的汇报经理是行政部的经理,而实际这个助理的汇报经理是这个部门的老板,这样的情况都有可能发生。
      

  6.   

    How To: Use Windows Authentication in ASP.NET 2.0
    http://msdn.microsoft.com/en-us/library/ff647405.aspx