如何根据用户权限使用站点地图数据源过滤TreeView和Menu控件的节点?

时间:2020-03-05 18:44:41  来源:igfitidea点击:

我正在使用ASP.NET登录控件和表单身份验证作为ASP.NET Web应用程序的成员身份/凭证。我正在使用站点地图进行站点导航。

我有使用SiteMapDataSource填充的ASP.NET TreeView和Menu导航控件。但是非管理员用户可以看到仅限管理员使用的页面。

Kevin Pang wrote:
  
  I'm not sure how this question is any
  different than your other question…

另一个问题涉及分配和维护权限。

这个问题只涉及导航的表示。特别是带有站点地图数据源的TreeView和Menu控件。

<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1" />
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="False" />
Nicholas wrote:
  
  add role="SomeRole" in the sitemap

那只能解决显示问题吗?还是强制执行此类页面权限?

解决方案

回答

我必须在我的web.config文件中将securityTrimmingEnabled设置为" true"。

<?xml version="1.0"?>
<configuration>
    ...
    <system.web>
        ...
        <siteMap defaultProvider="default">
            <providers>
                <clear/>
                <add name="default"
                    type="System.Web.XmlSiteMapProvider"
                    siteMapFile="web.sitemap"
                    securityTrimmingEnabled="true"/>
            </providers>
        </siteMap>
        ...
    </system.web>
    ...
</configuration>

回答

我不确定该问题与其他问题有什么不同,但是无论如何我都会尽力回答。

如果我们想获得有关如何实现基于角色的身份验证的教程,请从4GuysFromRolla中检出一个。

回答

securityTrimmingEnabled =" true"适用于具有配置文件限制权限的内部页面,我们还可以在站点地图中添加role =" SomeRole"来避免显示机制,如果我们有指向外部站点的菜单项,则该功能非常有用。