【问题标题】:MvcSiteMapProvider shows all menuitems even when the user isn't authorized for the actionMvcSiteMapProvider 显示所有菜单项,即使用户未获得操作授权
【发布时间】:2014-02-18 14:52:31
【问题描述】:
我正在尝试将MvcSiteMapProvider 配置到我的项目中,而MvcSiteMapProvider_SecurityTrimmingEnabled 参数似乎不起作用。我的项目的重点是:
- Visual Studio 2013
- ASP.Net MVC4
- Unity IoC 容器
- SimpleMembership 提供者
- MvcSiteMapProvider 是通过 NuGet 安装的
-
MvcSiteMapProvider_SecurityTrimmingEnabled 设置为 true
当我运行项目时,每个菜单都会显示,即使用户没有经过身份验证或没有被授权执行该操作。
我怎样才能让它工作?
【问题讨论】:
标签:
asp.net
asp.net-mvc-4
unity-container
simplemembership
mvcsitemapprovider
【解决方案1】:
根据documentation,在使用外部 DI 容器时,所有配置必须由 DI 配置提供。这主要是因为在使用外部 DI 时,许多设置的多样性可能会根据其配置方式而改变。
因此,换句话说,web.config/appSettings 中的MvcSiteMapProvider_SecurityTrimmingEnabled 在使用外部 DI 时将不起作用。
要提供此设置,您需要使用/DI/Unity/ContainerExtensions/MvcSiteMapProviderContainerExtension.cs 文件(模块)。在文件顶部附近,有一个名为 securityTrimmingEnabled 的变量需要设置为 true 才能启用安全修剪。
bool securityTrimmingEnabled = true;
您可以根据需要更改此文件,以注入您自己的任何接口实现或禁用许多对您的应用程序没有意义的内置功能。