Asp.net MvcSiteMapProvider显示所有菜单项,即使用户不是';他没有被授权采取行动

Asp.net MvcSiteMapProvider显示所有菜单项,即使用户不是';他没有被授权采取行动,asp.net,asp.net-mvc-4,unity-container,simplemembership,mvcsitemapprovider,Asp.net,Asp.net Mvc 4,Unity Container,Simplemembership,Mvcsitemapprovider,我正在尝试将mvcsitemprovider配置到我的项目中,而mvcsitemprovider\u SecurityTrimmingEnabled参数似乎不起作用。我的项目的关键是: Visual Studio 2013 ASP.NETMVC4 统一国际奥委会集装箱 SimpleMembership提供程序 MvcSiteMapProvider是通过NuGet安装的 mvcsitemprovider\u SecurityTrimmingEnabled设置为true 当我运行项目时,每个菜单

我正在尝试将
mvcsitemprovider
配置到我的项目中,而
mvcsitemprovider\u SecurityTrimmingEnabled
参数似乎不起作用。我的项目的关键是:

  • Visual Studio 2013
  • ASP.NETMVC4
  • 统一国际奥委会集装箱
  • SimpleMembership提供程序
  • MvcSiteMapProvider是通过NuGet安装的
  • mvcsitemprovider\u SecurityTrimmingEnabled
    设置为
    true
当我运行项目时,每个菜单都会显示出来,即使用户未经过身份验证或未获得操作授权

如何使其工作?

根据,使用外部DI容器时,所有配置必须由DI配置提供。这主要是因为当使用外部DI时,许多设置的多样性可能会根据其配置方式而改变

因此,换句话说,当使用外部DI时,web.config/appSettings中的
mvcsitemprovider\u SecurityTrimmingEnabled

要提供此设置,您需要使用
/DI/Unity/ContainerExtensions/mvcsitemprovidercontainerextension.cs
文件(模块)。在文件顶部附近,有一个名为securityTrimmingEnabled的变量,需要将该变量设置为true才能启用安全修剪

bool securityTrimmingEnabled = true;
您可以根据需要更改此文件,以注入您自己的任何接口实现,或禁用许多对应用程序没有意义的内置功能