Элемент управления SiteMap, основанный на пользовательских ролях, не работает - PullRequest
0 голосов
/ 19 апреля 2010
  <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"), он показывает мне, есть ли пользователь в роли администратора или нет.

веб-конфигурация:

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

Ответы [ 2 ]

2 голосов
/ 19 апреля 2010

Включить обрезку безопасности Усечение безопасности не включено по умолчанию и не может быть включено программно; это можно установить только в файле Web.config

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

1 голос
/ 22 апреля 2010

Вам необходимо использовать тег location в web.config.

<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

...