<siteMapNode roles="*">
<siteMapNode url="~/Default.aspx" title=" Main" description="Main" roles="*"/>
<siteMapNode url="~/Items.aspx" title=" Adv" description="Adv" roles="Administrator"/>
....
任何用户都可以看到Adv页面。这是一个麻烦和问题:为什么以及如何隐藏角色sitenodes。
但如果我HttpContext.Current.User.IsInRole("Administrator")
,它会显示用户是否处于管理员角色。
网络配置:
<authentication mode="Forms"/>
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add connectionStringName="FlowWebSQL" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordFormat="Hashed" applicationName="/" name="SqlProvider" type="System.Web.Security.SqlMembershipProvider"/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="SqlProvider">
<providers>
<add connectionStringName="FlowWebSQL" name="SqlProvider" type="System.Web.Security.SqlRoleProvider" />
</providers>
</roleManager>
答案 0 :(得分:2)
启用安全修整 默认情况下不启用安全修整,并且无法以编程方式启用它;它只能在Web.config文件中设置
答案 1 :(得分:1)
您需要在web.config中使用location标记。
<location path ="Items.aspx" >
<system.web>
<authorization>
<allow roles ="Administrator"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
请参阅以下步骤自定义角色实施
http://urenjoy.blogspot.com/2010/03/custom-role-provider-sitemap-navigation.html