【问题标题】:ASP.NET Web.Sitemap - one role not being displayed in nav menu while others areASP.NET Web.Sitemap - 一个角色未显示在导航菜单中,而其他角色则显示
【发布时间】:2012-10-05 18:55:25
【问题描述】:

我正在开发一个 ASP.NET C# 应用程序,该应用程序为应用程序中的不同用户级别定义了三个角色:“用户”、“经理”和“管理员”。我已经完成了大部分用户和管理员的工作,并且刚刚在管理器部分添加了一个页面。但是“经理”部分没有出现在我的 TreeView 导航菜单中。我在http://blogs.ipona.com/davids/archive/2009/01/12/8554.aspx 阅读了出色的博客文章,我似乎遵循了他定义的所有“规则”,但它仍然不起作用。

这是我的 Web.sitemap 文件:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
  <siteMapNode url="#">
    <siteMapNode url="~/User/Default.aspx" roles="Admin,Manager,User" title="Home" />
    <siteMapNode url="~/User/About.aspx" roles="Admin,Manager,User" title="About" description="About this application" />
    <siteMapNode roles="Admin,Manager,User" title="User Functions">
      <siteMapNode url="~/User/CreateNewIPR.aspx" roles="Admin,Manager,User" title="Create New IPR" description="Enter a new IPR" />
      <siteMapNode url="~/User/ListIPRs.aspx" roles="Admin,Manager,User" title="List IPRs" description="List all the IPRs you have entered" />
      <siteMapNode url="~/User/ViewIPRDetails.aspx" roles="Admin,Manager,User" title="View IPR Details" description="View details of an IPR" />
    </siteMapNode>
    <siteMapNode roles="Admin" title="Admin Functions">
      <siteMapNode url="~/Admin/ManageApprovalLevels.aspx" roles="Admin" title="Manage Approval Levels"
               description="Allows administrators to add/edit approval levels" />
      <siteMapNode url="~/Admin/ManageUsers.aspx" roles="Admin" title="Manage Users &amp; Roles" description="Allows administrators to add users to roles and add new users to the system" />
      <siteMapNode url="~/Admin/ManageApprovers.aspx" roles="Admin" title="Manage Approvers" description="Allows administrators to manage approvers" />
    </siteMapNode>
    <siteMapNode roles="Manager" title="Manager Functions">
      <siteMapNode url="~/Manager/ApprovalsList.aspx" roles="Manager" title="Approve Purchase Requests" description="Allows managers to approve purchase requests" />
    </siteMapNode>
  </siteMapNode>
</siteMap>

这是“Manager”文件夹中的 Web.config:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow roles="Admin,Manager" />
      <deny users="*" />
    </authorization>
  </system.web>
</configuration>

最后,这里是我在根 Web.config 中定义 SiteMap 提供程序的地方:

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
  <providers>
    <add name="XmlSiteMapProvider" description="Default SiteMap provider" type="System.Web.XmlSiteMapProvider" siteMapFile="IPRTracker.sitemap" securityTrimmingEnabled="true" />
  </providers>
</siteMap>

这是我得到的屏幕截图(请注意,缺少 Manager 部分):

【问题讨论】:

    标签: asp.net asp.net-roles sitemapprovider


    【解决方案1】:

    好吧,结果证明是相当简单的事情,尽管我并不完全理解它。在 Web.sitemap 中,以下行:

    <siteMapNode roles="Manager" title="Manager Functions">
    

    需要改成:

    <siteMapNode roles="Admin,Manager" title="Manager Functions">
    

    即使我正在测试的用户 ID 是所有三个角色(管理员、经理和用户)的成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 2021-04-06
      • 2018-09-20
      • 2016-09-09
      相关资源
      最近更新 更多