2010-04-19 2 views
0
<siteMapNode roles="*"> 

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

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

.... 

모든 사용자는 Adv 페이지를 볼 수 있습니다. 그게 문제이고 퀴 스톤입니다 : 왜 그리고 어떻게 역할의 sitenodes를 숨기려고합니다.사용자 역할을 기반으로하는 SiteMap 컨트롤이 작동하지 않습니다.

그러나 내가 수행 할 경우 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> 

답변

1

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

+0

hm ... WebApplication의 App_Code에 System.Web을 사용할 수 없습니다. – Cynede

+0

... 각 역할마다 다른 폴더가 없습니다. 폴더 무 몇 가지 폴더를 할 st는 일부 역할 (하나의 역할이 아닌 하나의 폴더)을 가질 수 있습니다. – Cynede

+0

하지만 ... web.config의 코드가 실제로 도움이되었습니다! 고맙습니다. – Cynede

2

이 보안 트리밍 트리밍 보안을 사용는 기본적으로 사용되지 않습니다, 그것은 프로그램을 사용할 수 없습니다; 단지 당신의 Web.config에 location 태그를 사용할 필요가

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

+0

가 아하 ... 문제는 여기 단계 사용자 지정 역할 구현 단계에서 다음을 참조하십시오 Cynede

+0

사이트 맵 데이터 소스는 하나의 요소 만 요청합니다 – Cynede

관련 문제