在我的项目中,我有一个Upload文件夹,用户可以在其中上传视频文件,然后通过HTML5 Video Player从此文件夹查看该文件。但是,如果真实用户浏览www.mysite.com/Upload/videofilename.mp4,则还会显示视频。 我想限制对Video文件夹的直接访问。有什么办法吗?
答案 0 :(得分:1)
您必须在网络配置中为上传文件夹设置 hiddenSegments 。您也可以通过IIS进行设置。 您的网站>请求过滤>隐藏的细分。 设置隐藏的细分后,任何人都无法使用url访问文件。
Webconfig
<security>
<requestFiltering>
<hiddenSegments>
<add segment="Upload"/>
</hiddenSegments>
</requestFiltering>
</security>
查看页面
<video width="320" height="240" controls>
<source src="@Url.Action("GetMedia","Home")" type="video/mp4" />
</video>
代码
[Authorize]
public ActionResult GetMedia()
{
string fn = Server.MapPath("~/Upload/1.mp4");
var memoryStream = new MemoryStream(System.IO.File.ReadAllBytes(fn));
return new FileStreamResult(memoryStream, MimeMapping.GetMimeMapping(System.IO.Path.GetFileName(fn)));
}
答案 1 :(得分:0)
您有两个选择:
选项1:
在以下方法的RegisterRoute方法中使用IgnoreRoute语句 您的RouteConfig类。 示例:
public RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("yourRoute");
}
}
参考:https://www.c-sharpcorner.com/UploadFile/f82e9a/ignore-route-in-mvc/
选项2:
拒绝访问Asp.NET web.Config中的所有用户。 例子:
<location path="yourPath">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
参考:Asp.net MVC Routing - Preventing a route to an XML file with a constraint