在asp.net web.sitemap中隐藏授权菜单项

发布于 2024-07-13 02:16:28 字数 234 浏览 6 评论 0 原文

我有一个启用了安全修剪的 web.sitemap,但是我需要根据 web.config 中没有访问规则的页面的角色隐藏菜单项。

即我有一个营销活动页面,用于查看现有营销活动以及添加新营销活动,但我希望对匿名用户隐藏“新营销活动”菜单项。 我尝试将角色名称添加到 web.sitemap 中的角色属性中,但这没有效果。

我确信必须有一种快速的方法来做到这一点,而无需修改站点地图提供程序,这是我的下一个停靠点。

I have a web.sitemap with security trimming enabled, however I need to hide a menu item based on a role to a page that has no access rules in the web.config.

i.e I have a Campaign page that is used to view existing campaigns as well as to add new campaigns, but I want the "New Campaigns" menu item to be hidden for anonymous users.
I tried adding the role name to the roles attribute in the web.sitemap but this has no effect.

I'm sure there must be a quick way to do this without modifying the sitemap provider which is my next port of call.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜`诱少女 2024-07-20 02:16:28

如果这只是匿名用户的特殊情况,您可以创建第二个站点地图。

创建一个新文件 WebAnon.sitemap。
在 web.config 中创建新的站点地图提供程序

<add name="anonProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="WebAnon.sitemap" securityTrimmingEnabled="true"/>

设置 SiteMapDataSource 的 SiteMapProvider 属性更改为后面代码中的“anonProvider”。

If this is just a special case for anonymous users, you could create a second SiteMap.

Create a new file WebAnon.sitemap.
Create a new sitemap provider in the web.config

<add name="anonProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="WebAnon.sitemap" securityTrimmingEnabled="true"/>

Set the SiteMapDataSource's SiteMapProvider property to "anonProvider" in the code behind if its an anonymous user.

深白境迁sunset 2024-07-20 02:16:28

中的 roles 属性是“允许”列表,而不是拒绝列表。 在 web.config 中创建/修改相应的 元素以允许经过身份验证的用户并拒绝匿名用户; 例如,

<location path="campaigns.aspx">
 <system.web>
  <authorization>
   <allow users="*" />
   <deny users="?" />
  </authorization>
 </system.web>
</location>

顺便说一句,如果您使用 Windows 主体和角色,则对组成员资格的任何更改都不会生效,直到您注销然后重新登录。

The roles attribute in a <siteMapNode /> is an "allow" list, not a deny. Create/modify a corresponding <location /> element in web.config to allow authenticated users and deny anonymous; e.g.

<location path="campaigns.aspx">
 <system.web>
  <authorization>
   <allow users="*" />
   <deny users="?" />
  </authorization>
 </system.web>
</location>

BTW, if you're using a Windows principal and roles, any changes to your group membership don't take effect until you log off and then back on.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文