【问题标题】:Asp.net MVC Routing - Preventing a route to an XML file with a constraintAsp.net MVC Routing - 防止路由到带有约束的 XML 文件
【发布时间】:2011-06-23 17:57:19
【问题描述】:

我正在尝试找到一种方法来阻止用户访问特定的 xml 文件。我试过做...

routes.MapRoute(
     "SiteMap",
     "SiteMap/siteMap.xml",
     new { },
     new { isLocal = new LocalHostRouteConstraint() });

LocalHostRouteConstraint() 在哪里...

public class LocalHostRouteConstraint : IRouteConstraint
{
    public bool Match(System.Web.HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return !httpContext.Request.IsLocal;
    }
}

这是此页面上的实现...

http://www.asp.net/mvc/tutorials/creating-a-custom-route-constraint-cs

但是仍然允许路由访问xml!

还有其他方法可以防止这种情况发生吗?

编辑 忘了提忽略了!在 LocalHostRouteConstrsint 类中。这样做是为了测试它的工作原理。

【问题讨论】:

  • 你想完成什么?你为什么不直接使用 routes.IgnoreRoute("SiteMap/siteMap.xml") ?
  • 你也可以试试routes.IgnoreRoute("{*sitemap}", new { sitemap = @"(.*/)?siteMap.xml(/.*)?" });
  • @frennky 我试过了,但用户仍然可以直接在地址栏中输入路径并获取 .xml 文件。我正在寻找一种方法来阻止用户导航到该文件。
  • @Aivan 我会在早上试试,然后告诉你进展如何。

标签: asp.net asp.net-mvc routing asp.net-mvc-3


【解决方案1】:

限制是否必须在 MVC 路由中?

如果没有,您可以在web.config 中的</configuration> 结束标记之前放置以下内容:

<location path="SiteMap/siteMap.xml">
     <system.web>
        <authorization>
           <deny users="*"/>
        </authorization>
     </system.web>
 </location>

【讨论】:

  • 不必如此。我也会试一试。
猜你喜欢
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 2011-06-01
  • 1970-01-01
相关资源
最近更新 更多