【问题标题】:Different menu Items for different roles不同角色的不同菜单项
【发布时间】:2013-05-25 07:15:21
【问题描述】:

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

【问题讨论】:

  • 您可以在每个页面加载时绑定菜单,也可以在会话中以您喜欢的任何方式保存菜单..
  • 是的,这当然是一个选项,可以为不同的角色提供不同的站点地图,然后根据角色绑定它。但我想知道我们可以在页面加载中设置角色,其余的由站点地图处理。你说什么?
  • 我不是在谈论为每个角色设置不同的站点地图,您可以只使用站点地图并在绑定时使用 MenuItemDataBound 事件来隐藏不需要的项目。
  • 嗯 @Ratna 这可能是我之前所说的在 Page_Init() 中设置角色,然后其余的将由站点地图处理

标签: asp.net roles


【解决方案1】:

您可以向数据库表中的每个用户添加他们可以查看和允许访问的允许 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 = "";

                            }
                        }
                    }
                } 

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多