菜单按用户显示

时间:2017-04-10 07:14:39

标签: c# sql menu user-roles

我的表单包含从数据库中的表动态创建的菜单。如下

  public void FourthMenu(ToolStripMenuItem mnu, string submenu)
    {

        string Seqchild = "SELECT FRM_NAME,FourthMenuID FROM MNU_FOURTH WHERE ThirdMenuID = '" + submenu + "'";
        SqlDataAdapter dachildmnu = new SqlDataAdapter(Seqchild, conn);
        DataTable dtchild = new DataTable();
        dachildmnu.Fill(dtchild);

        foreach (DataRow dr in dtchild.Rows)
        {
            ToolStripMenuItem SSMenu2 = new ToolStripMenuItem(dr["FRM_NAME"].ToString(), null, new EventHandler(ChildClick));
            FifthMenu(SSMenu2, dr["FourthMenuID"].ToString());
            mnu.DropDownItems.Add(SSMenu2);
        }

outputa如图所示。

enter image description here

要求是按用户显示菜单。例如  如果user1只有访问帐户和财务页面的权限,那么菜单将显示在帐户和财务上。

如果user2有权访问第4th1页,那么菜单将显示到第4位,但不应显示“第4位”。

我如何处理它,任何文章参考等......

提前致谢......

1 个答案:

答案 0 :(得分:0)

您可以使用此类数据库设计,它可以提供用户权限级别呈现。

Table 1 - Users

    Users
     {
       string Name,
       int Id,
       int RoleId
     }

Table 2- Roles

    Roles
     {
       string Name,
       int Id,
       bool HasWriteAccess
     }

Table 3 - MenuItems

    MenuItems
     {
       string Title,
       int Id,
       int RoleId
     }

所以你的查询将是

    select * from MenuItems mi, Roles role, Users user
      where mi.RoleId = role.Id and
      user.RoleId = role.Id and
      user.Id= LoggedInUserId;

这将根据登录的用户提供菜单项。

希望它有所帮助!!!