0
  <siteMapNode roles="*">

    <siteMapNode url="~/Default.aspx" title=" Main" description="Main" roles="*"/>

    <siteMapNode url="~/Items.aspx" title=" Adv" description="Adv" roles="Administrator"/>

....

すべてのユーザーがAdvページを表示できます。それは問題であり、疑問です。役割のサイトノードから隠す理由と方法。

しかし、HttpContext.Current.User.IsInRole("Administrator")そうすると、ユーザーが管理者の役割を果たしているかどうかが表示されます。

Web構成:

<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>
4

2 に答える 2

2

セキュリティトリミングを有効にするセキュリティトリミングはデフォルトでは有効になっておらず、プログラムで有効にすることはできません。Web.configファイルでのみ設定できます

http://msdn.microsoft.com/en-us/library/ms178428.aspx

于 2010-04-19T06:40:10.617 に答える
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

于 2010-04-22T05:54:04.197 に答える