【问题标题】:MVC 4 routing - ignore requests for imagesMVC 4 路由 - 忽略对图像的请求
【发布时间】:2015-08-27 07:03:24
【问题描述】:

我试图阻止用户在我的网络应用程序中自行请求访问图像,因此不应允许用户发出此类请求:

网站名称/图片/test.jpg

我尝试在 RouteConfig.cs 中指定要忽略的路由,但它仍然自行提供图像,有没有办法防止这种情况发生?

这是我尝试过的:

routes.IgnoreRoute("{file}.jpg");
routes.IgnoreRoute("Images/{file}.jpg");
routes.IgnoreRoute("{resource}.jpg");
routes.IgnoreRoute("Images/{resource}.jpg");

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 c#-4.0 .net-4.0


    【解决方案1】:

    如果你想忽略文件夹,你可以这样写:

    routes.IgnoreRoute("Images/{*pathInfo}");
    

    如果您只想忽略文件夹中的某些文件,您可以像这样使用this overload of IgnoreRoute()

    routes.IgnoreRoute("{Images}", new { assets = @".*\.(jpeg|gif|jpg)(/.)?" });
    

    如您所见,constraints 参数可以像RegExp 一样实现。

    【讨论】:

    • 我已经尝试过了,但它仍然可以满足图像请求。我已经尝试了您答案中提供的两个示例
    • 默认禁止使用Images文件夹
    • @DenisWessels 对不起,我不明白你的情况。您不想允许用户从直接链接中获取图像,但应该仍然能够以其他方式下载它们?
    • 如果用户尝试像这样自行访问图像 - www/site.com/images/test.jpg - 这不应该被允许
    • Route.ignoreroute 忽略使用控制器的默认路由。我的意思是,当请求到达服务器时,它会进行路由,如果找到匹配项,则控制器会初始化,当您不需要使用控制器并且只想将静态内容传递给用户时,请求的名称看起来像您使用的控制器的路径 ignoreroure .所以我的意思不是关于访问文件夹,而是关于使用或不使用控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    相关资源
    最近更新 更多