即使用户未获得操作授权,MvcSiteMapProvider也会显示所有菜单项

时间:2014-02-18 14:52:31

标签: asp.net asp.net-mvc-4 unity-container simplemembership mvcsitemapprovider

我尝试将MvcSiteMapProvider配置到我的项目中,MvcSiteMapProvider_SecurityTrimmingEnabled参数似乎无法正常工作。我项目的关键词是:

  • Visual Studio 2013
  • ASP.Net MVC4
  • Unity IoC容器
  • SimpleMembership Provider
  • MvcSiteMapProvider是通过NuGet
  • 安装的
  • MvcSiteMapProvider_SecurityTrimmingEnabled设置为true

当我运行项目时,即使用户未经过身份验证或未获得操作授权,也会显示每个菜单。

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

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

因此,换句话说,使用外部DI时,web.config / appSettings中的MvcSiteMapProvider_SecurityTrimmingEnabled将无效。

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

bool securityTrimmingEnabled = true;

您可以根据需要更改此文件,以注入您自己的任何接口实现,或禁用许多对您的应用程序没有意义的内置功能。<​​/ p>