Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC站点地图提供程序安全性微调&x2B;隐藏物_C#_Asp.net Mvc_Mvcsitemapprovider - Fatal编程技术网

C# MVC站点地图提供程序安全性微调&x2B;隐藏物

C# MVC站点地图提供程序安全性微调&x2B;隐藏物,c#,asp.net-mvc,mvcsitemapprovider,C#,Asp.net Mvc,Mvcsitemapprovider,我在ASP.NET MVC项目中设置了MVC站点地图提供程序,以呈现下拉菜单。我将其配置为使用安全微调 <add key="MvcSiteMapProvider_SecurityTrimmingEnabled" value="true"/> 说要实现缓存。谁能告诉我现在情况如何 谢谢。因为没有内置的用户缓存,所以在请求之间存储页面可访问性设置是不切实际的,更不用说缓存这些设置可能会使它们与当前上下文不同步(例如,如果用户注销)。如果不做额外的工作来同步缓存和当前应用程序状态,缓存安

我在ASP.NET MVC项目中设置了MVC站点地图提供程序,以呈现下拉菜单。我将其配置为使用安全微调

<add key="MvcSiteMapProvider_SecurityTrimmingEnabled" value="true"/>
说要实现缓存。谁能告诉我现在情况如何


谢谢。

因为没有内置的用户缓存,所以在请求之间存储页面可访问性设置是不切实际的,更不用说缓存这些设置可能会使它们与当前上下文不同步(例如,如果用户注销)。如果不做额外的工作来同步缓存和当前应用程序状态,缓存安全设置总是为黑客规避安全提供了一种简单的方法

因此,在每个请求中,每个节点调用authorized属性一次。请记住,MVC只关心当前页面,但MvcSiteMapProvider必须检查所有页面的安全性,以确定要显示和隐藏的节点。但是,在v4中,当使用默认属性时,安全性微调性能得到了显著提高。执行请求缓存是为了确保每个节点对每个请求的调用不会超过一次

如果已对进行了自定义,则应注意尽快进行检查,并将任何响应操作委托给处理程序(),而不是在custom Authorized属性中执行

将自定义AuthorizeAttribute与MvcSiteMapProvider一起使用的一个约束是,授权成功时必须将actionContext.Response值设置为null,授权失败时必须设置非null值

<add key="MvcSiteMapProvider_CacheDuration" value="60" />