0

我想在我的项目中添加管理员可以为用户设置访问控制。
假设管理员可以选择用户名和模块名并将其保存到数据库中。
当用户成功登录后,他只能显示管理员添加的特定工具条菜单项。

但我不知道该怎么做。

我只需通过管理员添加用户凭据和模块名称。当用户尝试登录时,我将该控件名称检索到字符串类型变量中,并尝试这样做..

public void AccessControl()
{
    SqlConnection conn = new SqlConnection("Data Source=MYSOFTIT-05-PC\\SQLEXPRESS;Initial Catalog=Point_Of_Sale;Integrated Security=True");

    conn.Open();
    SqlCommand scmd = new SqlCommand("SELECT Control FROM Roll WHERE Email = 'taherak17@gmail.com'; ", conn);
    SqlDataAdapter dataAdapter = new SqlDataAdapter(scmd);
    DataTable dt = new DataTable();
    DataSet dataSet = new DataSet();
    dataAdapter.Fill(dataSet);
    SqlDataReader myReader = null;
    myReader = scmd.ExecuteReader();

    while (myReader.Read())
    {
        var a = (myReader[0].ToString());

    }
    conn.Close();
}

private void Login_Load(object sender, EventArgs e)
{
    AccessControl();
}

但令人震惊的是我如何根据数据库值定义启用或禁用 ToolStripMenuItem? 这是我的界面,特定菜单项被禁用或启用 这是我的滚动表

4

1 回答 1

0

当管理员授权模块时,将 ToolStripMenuItem 名称保存在数据库中。默认情况下隐藏这些菜单项。然后从您的查询中加载名称,例如在一个数组中。然后在父表单加载时执行此操作。

        for (int i = 0; i < menuItems.Length; i++)
        {
            menuStrip.Items[menuItems[i]].Visible= true;
        }

这里的 menuItems 是一个字符串数组,其中包含数据库中的 ToolStripMenuItem 名称。menuStrip 是您的 System.Windows.Forms.MenuStrip,其中包含 ToolStripMenuItem(s)。这将只显示管理员已授权的那些菜单项(存储在数据库中)。

于 2018-03-29T08:00:04.213 回答