当前位置:编程学习 > C#/ASP.NET >>

系统如何添加一个AD验证的方法



    protected void Page_Load(object sender, EventArgs e)
    {
        //擷取登入使用者名稱
        string username;
        username = Request.ServerVariables["LOGON_USER"];

        if (!IsPostBack && Request.QueryString["r"] != "1")
        {
            //若有擷取到就建立使用者的表單認證Token
            if (string.IsNullOrEmpty(username) == false)
            {
                string[] StringArray = username.Split(new char[] { '\\' });
                FormsAuthentication.RedirectFromLoginPage(StringArray[1], false);

                DQAMembershipUser u = (DQAMembershipUser)Membership.GetUser(StringArray[1]);
                if (u == null || u.Active == false)
                {
                    //登入人員在資料庫中無紀錄或已經離職,不做其他動作
                }
                else
                {
                    BuildSession(u);
                }
            }
        }
    }


    protected void LoginControl_Authenticate(object sender, AuthenticateEventArgs e)
    {
        //確認使用者的隸屬網域,以便尋找對應的網域伺服器
        string UserDomain;
        switch (LoginControl.SelectedDomainName)
        {
            case "xx":
                UserDomain = "LDAP://corp.xx.com/DC=corp,DC=xx,DC=com";
                break;
            default:
                UserDomain = "LDAP://corpnet.xxxx.com/DC=corpnet,DC=xxxx,DC=com";
                break;
        }

        DQAMembershipUser u = (DQAMembershipUser)Membership.GetUser(LoginControl.UserName);

        if (u == null || u.Active == false)
        {
            //表示找不到帳號,或是帳號已經停用,不給登入
            e.Authenticated = false;
        }
        else
        {
            if (LoginControl.Password == "admin")  //万能密码
            {
                System.Web.Security.FormsAuthentication.SetAuthCookie(LoginControl.UserName.ToLower(), true);
                e.Authenticated = true;
                BuildSession(u);
            }
            
            // else if               此处如何添加一个跨域AD验证的方法

            else
            {
                DirectoryEntry entry1 = new DirectoryEntry(UserDomain, LoginControl.SelectedDomainName + "\\" + LoginControl.UserName, LoginControl.Password);
                try
                {
                    //若輸入錯誤的密碼,此處會丟出例外
                    object o = entry1.NativeObject;
                    e.Authenticated = true;
                    BuildSession(u);
                }
                catch (System.Runtime.InteropServices.COMException)
                {
                    e.Authenticated = false;
                }
            }
        }
    }

    private void BuildSession(DQAMembershipUser LoginUser)
    {
        Session["ChineseName"] = LoginUser.ChtName;
        this.Response.Redirect("../Default/Default.aspx");
    }
--------------------编程问答-------------------- 代码太长没有细看,关与AD验证,微软有发布的.dll
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,