asp.net-mvc-3 - ASP.NET MVC3 : Private resources

标签 asp.net-mvc-3 resources private

有没有办法将资源设为私有(private)。

我有一个视频内容网站。他们上传。文件存储在网络服务器上。

文件被嵌入回网站。

现在,如果我在 google chrome 中查看“源代码”,我会看到:

<object classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" height="400" width="600" >
<param name="URL" value="/Videos/Tree%20Felling.wmv" />
<param name="autoStart" value="False" />
<param name="uiMode" value="full" />
<param name="stretchToFit" value="True" />
<param name="volume" value="75" />
<embed src="/Videos/Tree%20Felling.wmv" width="600" height="400" type="application/x-mplayer2" autoStart="False" uiMode="full" stretchToFit="True" volume="75" />
</object>

如您所见,位置现已已知。将其附加到网站地址,嘿,您很快就可以直接访问视频了?这意味着您可以保存文件或从其他无法登录的位置访问它。

如何阻止他们使用 URL 并将其嵌入到他们的网站等中。

还是我想错了?

如何防止这样的事情发生?

最佳答案

这是一个棘手的问题。我的解决方案是创建一个自定义 HttpHandler ( msdn article ) 并将其分配给某个自定义扩展 *.zzz, 因此,当您为嵌入元素生成 src 时,它将如下所示:/视频/uploaded.zzz?id={someId}。然后在 HttpHandler 中,我将 id 解析为正在请求的视频并返回响应。如果您担心有人直接链接到/Videos/uploaded.zzz 网址,您可以让处理程序代码(ProcessRequest 方法)在返回媒体文件之前检查用户是否已获得授权(在请求期间登录)。您可以根据需要添加限制,根据对文件的请求数量等进行限制。

我还没有编写代码来测试它,但它应该非常简单。

关于asp.net-mvc-3 - ASP.NET MVC3 : Private resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11953854/

相关文章:

asp.net-mvc-3 - InnerException {"Invalid object name ' dbo.Users'"}

node.js - 具有带有 node.js 集群模块的全局对象

.net - .Net 中的 WebClient 不释放套接字资源

parallel-processing - OpenMP 线程私有(private)和私有(private)之间的区别

rust - 为什么这个特征 `impl` 被认为泄漏了私有(private)特征?

actionscript-3 - ActionScript - 只读属性和私有(private)设置方法?

asp.net - Razor View - 在 Doctype 标记外发出 html

asp.net-mvc - 一个 View 中的两个模型,仅验证其中一个

Laravel 4 资源 Controller - 索引操作的附加参数

asp.net-mvc - MVC远程验证,参数为空