c#winform活动目录:如果登录成功,则访问另一个表单

新点网

我想从具有登录文本框和密码文本框以及登录按钮的表单创建控件。当我输入活动目录帐户名及其密码时,我想使用另一种形式。有人可以帮我这个忙。在此代码示例中,我选择了仅用于登录的帐户。我想选择它并输入密码,然后从表单(登录)到表单(用户界面)按目的地进入目的地表单。

 private void radiobtnAD_CheckedChanged(object sender, EventArgs e)
    {
        if (radiobtnAD.Checked)
        {
           try
        {

            string filter = "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))";
            string[] propertiesToLoad = new string[1] { "name" };


            using (DirectoryEntry root = new DirectoryEntry("LDAP://DOMAIN"))
            using (DirectorySearcher searcher = new DirectorySearcher(root, filter, propertiesToLoad))
            using (SearchResultCollection results = searcher.FindAll())
            {
                foreach (SearchResult result in results)
                {
                    string name = (string)result.Properties["name"][0];
                    comboBox1.Items.Add(name);

                }
            }
        }
        catch
        {
        } 
        }

    }
内特B.

这是您的代码,已编辑。

  1. 验证文本框(!string.Empty)。
  2. 验证凭据。
  3. 根据用户类型显示所需的表单。

当您正确分割代码时,这很容易做到。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using LibXmlSettings.Settings;
using Microsoft.ApplicationBlocks.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.DirectoryServices;
using System.IO;
using System.Linq.Expressions;
using System.Runtime.InteropServices;

using System.DirectoryServices.AccountManagement;

namespace GestionnaireDesPlugins
{
    public partial class Login : Form
    {
        public Login(string accountName, string accountPassword)
        {
            InitializeComponent();
        }

        private void LoginOnClick(object sender, EventArgs e)
        {
            if (IsValid())
            {
                GetUser();
                // Do whatever you want
                ShowForm();
            }
        }

        private void GetUser()
        {
            try 
            {            
                LdapConnection connection = new LdapConnection("AD");
                NetworkCredential credential = new NetworkCredential(txtboxlogin.Text, txtboxpass.Text);
                connection.Credential = credential;
                connection.Bind();
            }
            catch (LdapException lexc)
            {
                String error = lexc.ServerErrorMessage;
                MessageBox.Show("error account or password.");
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.ToString());
            }
        }

        private bool IsValid()
        {
            // Check if the user haven't chosen an account
            if (!string.IsNullOrEmpty(txtboxlogin.Text) { return false; }

            // Check if the user haven't chosen an account
            if (!string.IsNullOrEmpty(txtboxpass.Text)) { return false; }

            // Check if the user haven't chosen an account
            if (!string.IsNullOrEmpty(comboBox1.Text)) { return false; }

            // Check if the password TextBox is empty
            if (!string.IsNullOrEmpty(textBox1.Text)) { return false; }
            using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"))
            {
                // validate the credentials
                bool isValid = pc.ValidateCredentials(txtboxlogin.Text, txtboxpass.Text);
            }
            return isValid;
        }

        private void ShowForm()
        {
            if (txtboxlogin.Text == "WantedAdminUser")
            {
                using (AdminForm form2 = new AdminForm())
                   form2.ShowDialog();
                Show(); 
            }
            else
            {
                using (user userform = new user())
                    userform.ShowDialog();
                Show();
            }
        }
    }
}

如前所述,由于您是C#的新手,因此这里有一些建议:

  1. 拆分您的代码:方法必须简短且按目的分开。对于您和任何使用您的代码的人来说,这都更加容易
  2. 管理例外
  3. 处置物体
  4. 请注意,这txtboxlogin.Text == "WantedAdminUser"很危险。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

登录成功后如何启动另一个活动

来自分类Dev

登录成功后如何在另一个活动(配置文件活动)中加载用户的数据库?我正在尝试创建个人资料页面

来自分类Dev

将c#Windows exe添加为另一个c#winform中的引用是否正确?

来自分类Dev

如果另一个表单处于活动状态,则禁用表单

来自分类Dev

从插入另一个活动的片段访问活动

来自分类Dev

Python-填写登录表单,然后填写另一个仅在登录后可访问的表单

来自分类Dev

访问另一个活动的布局Android

来自分类Dev

在另一个活动中访问相同的 webview

来自分类Dev

从另一个CS文件访问表单对象

来自分类Dev

我需要从另一个类(C#)访问表单控件

来自分类Dev

c#如何从另一个表单访问枚举常量名

来自分类Dev

如何通过双击C#WinForm将一个网格视图的一行数据复制到另一表单的另一网格视图

来自分类Dev

如何将用户从登录表单重定向到c#中的另一个表单

来自分类Dev

访问表单 - 如果选择了另一个字段,则会打开新字段

来自分类Dev

登录活动未指向另一个 android 活动

来自分类Dev

如何从一个活动访问用户输入到另一个类?

来自分类Dev

运行命令,如果失败,则运行另一个,如果成功,则结束

来自分类Dev

通过登录表单更新另一个表单文本框

来自分类Dev

如何从另一个活动访问设置活动中的复选框值?

来自分类Dev

如何在另一个活动中访问在主活动中声明的变量

来自分类Dev

Android:如何从活动访问以更新另一个活动的私有变量

来自分类Dev

成功登录TouchID后加载另一个View

来自分类Dev

成功登录PyQt5 Python3后打开另一个窗口

来自分类Dev

成功登录后传递到另一个页面

来自分类Dev

C#从另一个表单最大化一个表单

来自分类Dev

从另一个表单 C# 打开一个表单

来自分类Dev

访问在另一个活动中在一个活动中创建的数据库

来自分类Dev

验证我的表单和标题到另一个成功页面

来自分类Dev

验证我的表单和标题到另一个成功页面

Related 相关文章

  1. 1

    登录成功后如何启动另一个活动

  2. 2

    登录成功后如何在另一个活动(配置文件活动)中加载用户的数据库?我正在尝试创建个人资料页面

  3. 3

    将c#Windows exe添加为另一个c#winform中的引用是否正确?

  4. 4

    如果另一个表单处于活动状态,则禁用表单

  5. 5

    从插入另一个活动的片段访问活动

  6. 6

    Python-填写登录表单,然后填写另一个仅在登录后可访问的表单

  7. 7

    访问另一个活动的布局Android

  8. 8

    在另一个活动中访问相同的 webview

  9. 9

    从另一个CS文件访问表单对象

  10. 10

    我需要从另一个类(C#)访问表单控件

  11. 11

    c#如何从另一个表单访问枚举常量名

  12. 12

    如何通过双击C#WinForm将一个网格视图的一行数据复制到另一表单的另一网格视图

  13. 13

    如何将用户从登录表单重定向到c#中的另一个表单

  14. 14

    访问表单 - 如果选择了另一个字段,则会打开新字段

  15. 15

    登录活动未指向另一个 android 活动

  16. 16

    如何从一个活动访问用户输入到另一个类?

  17. 17

    运行命令,如果失败,则运行另一个,如果成功,则结束

  18. 18

    通过登录表单更新另一个表单文本框

  19. 19

    如何从另一个活动访问设置活动中的复选框值?

  20. 20

    如何在另一个活动中访问在主活动中声明的变量

  21. 21

    Android:如何从活动访问以更新另一个活动的私有变量

  22. 22

    成功登录TouchID后加载另一个View

  23. 23

    成功登录PyQt5 Python3后打开另一个窗口

  24. 24

    成功登录后传递到另一个页面

  25. 25

    C#从另一个表单最大化一个表单

  26. 26

    从另一个表单 C# 打开一个表单

  27. 27

    访问在另一个活动中在一个活动中创建的数据库

  28. 28

    验证我的表单和标题到另一个成功页面

  29. 29

    验证我的表单和标题到另一个成功页面

热门标签

归档