私は、アプリケーション内のさまざまなユーザー レベルに対して "ユーザー"、"マネージャー"、"管理者" の 3 つのロールが定義されている 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 & 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>
これは私が得たもののスクリーンキャプチャです(マネージャーセクションが欠落していることに注意してください):