0

我有一个自定义登录页面,我在其中对数据库中的用户进行身份验证。作为回报,我得到用户是否经过身份验证以及用户的角色。 例如,用户属于角色 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>
4

1 回答 1

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 = "";

                            }
                        }
                    }
                } 
于 2013-05-25T08:10:52.293 回答