将值从纯文本传递到按钮单击时的方法

时间:2015-07-16 20:26:31

标签: c# asp.net

我在ASP.net中使用以下代码登录使用Ldap身份验证。但是,我不知道如何将值从纯文本传递给此代码。我想通过点击按钮来运行它。

public class LdapAuthentication
{
    private string _path;
    private string _filterAttribute;
    public LdapAuthentication(string path)
    {
        _path = path;

    }
    public bool IsAuthenticated(string domain, string username, string pwd)
    {
        string domainAndUsername = domain + @"\" + username;
        DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd);

        try
        {
            // Bind to the native AdsObject to force authentication.
            Object obj = entry.NativeObject;
            DirectorySearcher search = new DirectorySearcher(entry);
            search.Filter = "(SAMAccountName=" + username + ")";
            search.PropertiesToLoad.Add("cn");
            search.PropertiesToLoad.Add("mail");
            SearchResult result = search.FindOne();
            if (null == result)
            {
                return false;
            }
            //if (result != null)
            //{
            //    string mail = result.Properties["mail"][0].ToString();

            //}

            // Update the new path to the user in the directory
            _path = result.Path;
            _filterAttribute = (String)result.Properties["cn"][0];
            _filterAttribute = (String)result.Properties["mail"][0];
        }
        catch (Exception ex)
        {
            throw new Exception("Error authenticating user. " + ex.Message);
        }
        return true;
    }
    public string GetGroups()
    {
        DirectorySearcher search = new DirectorySearcher(_path);
        search.Filter = "(cn=" + _filterAttribute + ")";
        search.Filter = "(mail=" + _filterAttribute + ")";
        search.PropertiesToLoad.Add("memberOf");
        StringBuilder groupNames = new StringBuilder();
        try
        {
            SearchResult result = search.FindOne();
            int propertyCount = result.Properties["memberOf"].Count;
            String dn;
            //int equalsIndex, commaIndex;

            for (int propertyCounter = 0; propertyCounter < propertyCount;
                 propertyCounter++)
            {
                dn = (String)result.Properties["memberOf"][propertyCounter];

                //equalsIndex = dn.IndexOf("=", 1);
                //commaIndex = dn.IndexOf(",", 1);
                //if (-1 == equalsIndex)
                //{
                //    return null;
                //}
                //groupNames.Append(dn.Substring((equalsIndex + 1),
                //                  (commaIndex - equalsIndex) - 1));
                //groupNames.Append("|");
            }
        }
        catch (Exception ex)
        {
            throw new Exception("Error obtaining group names. " +
              ex.Message);
        }
        return groupNames.ToString();
    }

}

1 个答案:

答案 0 :(得分:0)

这可能过于简单了,但......

 public void LoginButton_Clicked(object sender, EventArgs e)
{
    LdapAuthentication auth = new LdapAuthentication("YOURPATH");
    if (auth.IsAuthenticated("YOURDOMAIN", txtId.Text, txtPassword.Text))
    {
        //Login Passed
    }
}

我假设您使用的是WebForms,而您的用户名文本框中包含ID&#34; txtId&#34;,而您的密码文本框中包含ID&#34; txtPassword&#34;。

如果您不使用WebForms,则实现方式会有所不同。正如壮观的提到的那样,在我们知道您正在使用哪种UI框架之前,我们无法回答您的问题。