我的Sitemap包含角色执行功能。让我一步一步解释。登录UserA有RoleXYZ。在myFolder中,我有两个资源:file1,file2。我对此部分的web.config配置:
<location path="myFolder">
<system.web>
<authorization>
<allow roles="RoleXYZ, RoleABC" />
<deny users="*" />
</authorization>
</system.web>
</location>
我的站点地图:
<siteMapNode title="$Resources:Web.sitemap, Home" url="~/Home.aspx">
<siteMapNode title="Process" roles="RoleXYZ, RoleABC">
<siteMapNode title="Add Customers" url="~/myFolder/file1.aspx" roles="RoleXYZ"> </siteMapNode>
<siteMapNode title="Add Partners" url="~/myFolder/file2.aspx" roles="RoleABC"> </siteMapNode>
</siteMapNode>
<siteMapNode title="ContactUs" url="~/ContactUs.aspx"></siteMapNode>
</siteMapNode>
由于UserA只有一个角色RoleXYZ,通常他不会看到siteMapNode(添加合作伙伴)。
任何想法,问题出在哪里?
答案 0 :(得分:0)
“角色”属性只能用于扩大某个siteMapNode的可见性,绝不限制它。 MSDN文档充其量是误导性的。
另外,请记住您的配置不安全:角色RoleXYZ和RoleABC的用户都可以通过在浏览器中键入其地址来访问这两个页面。您应该限制对Web.config中各个页面的访问,而不是尝试使用“roles”属性。