不同角色的不同菜单项

时间:2013-05-25 07:15:22

标签: asp.net roles

我有一个自定义登录页面,我从数据库验证用户。作为回报,我得到用户是否经过身份验证以及用户的角色。 例如,用户属于角色X,角色Y或角色Z

我想根据用户的角色显示不同的菜单项。 站点地图文件在这种情况下是否有帮助。因为它确实具有角色属性 但是我应该如何将信息传递给用户属于此角色的下一页。我正在构建像这样的站点地图....

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
   <siteMapNode url="" title="Top" description="" roles="*">
      <siteMapNode url="GeneralUser.aspx" title="General User" description="" roles="GeneralUser" />
      <siteMapNode url="PowerUser.aspx" title="Power User" description="" roles="X" />
  </siteMapNode>
</siteMap>

1 个答案:

答案 0 :(得分:0)

您可以向数据库表中的每个用户添加一个允许的URL和主菜单项列表,他们可以查看并允许访问这些项目,当您获得每个用户的角色,然后将其保存在会话变量中,然后显示和隐藏site1.master中的项目,如下所示:

             //--------- Hiding Menu Items ------------------------
                for (int i = Menu1.Items.Count-1; i >=0 ; i--)
                {
                    if (Session["AllowedMenus"].ToString().ToUpper().IndexOf(Menu1.Items[i].Text.ToUpper().ToString()) < 0)
                    { 
                        //---- Hiding Main Menu
                        Menu1.Items[i].Text = "";
                        Menu1.Items[i].Enabled = false;


                    }
                    else
                    {
                        for (int j = Menu1.Items[i].ChildItems.Count - 1; j >= 0; j--)
                        {
                            url=Menu1.Items[i].ChildItems[j].NavigateUrl.ToUpper().ToString();
                            //---- Hiding Submenus
                            if (Session["AllowedURLs"].ToString().ToUpper().IndexOf(Menu1.Items[i].ChildItems[j].NavigateUrl.ToUpper().ToString()) < 0)
                            {
                                Menu1.Items[i].ChildItems[j].Text = "";

                            }
                        }
                    }
                }