0

MvcSiteMapProvider을 내 프로젝트에 구성하려고 시도 했으므로 MvcSiteMapProvider_SecurityTrimmingEnabled 매개 변수가 작동하지 않는 것 같습니다. 내 프로젝트의 핵심 원칙은 다음과 같습니다MvcSiteMapProvider는 사용자가 작업 승인을받지 않은 경우에도 모든 menuitem을 표시합니다.

  • 비주얼 스튜디오 2013
  • ASP.Net MVC4
  • 유니티 IoC 컨테이너
  • SimpleMembership 제공
  • MvcSiteMapProvider는 NuGet
  • 을 통해 설치
  • MvcSiteMapProvider_SecurityTrimmingEnabled 세트 true

프로젝트를 실행할 때 사용자가 인증되지 않았거나 작업을 승인받지 않은 경우에도 모든 메뉴가 표시됩니다.

어떻게 작동시킬 수 있습니까?

답변

2

documentation에 따라 외부 DI 컨테이너를 사용할 때는 모든 구성을 DI 구성으로 제공해야합니다. 이것은 주로 외부 DI를 사용할 때 구성 설정에 따라 설정의 다양성이 달라질 수 있기 때문입니다.

즉, 외부 DI를 사용할 때 web.config/appSettings의 MvcSiteMapProvider_SecurityTrimmingEnabled은 아무 효과가 없습니다.

이 설정을 제공하려면 /DI/Unity/ContainerExtensions/MvcSiteMapProviderContainerExtension.cs 파일 (모듈)을 사용해야합니다. 파일 상단에는 securityTrimmingEnabled라는 변수가 있으며, 보안 트리밍을 사용하려면이 값을 true로 설정해야합니다. 인터페이스의 당신 자신의 구현을 주입하거나 응용 프로그램에 대한 이해가되지 않는 내장 된 많은 기능을 비활성화 할 필요

bool securityTrimmingEnabled = true; 

는이 파일을 변경할 수 있습니다.