如何限制对服务器上的pdf文件的访问?

时间:2010-03-03 00:52:52

标签: asp.net-mvc pdf

我正在使用ASP.Net MVC。我使用ASP Forms身份验证限制访问该网站。但是,网页包含指向服务器上的pdf文件的链接,我也希望受到保护。

例如,用户可以浏览到foo.com和foo.com/account/logon。一旦他们登录,他们可以访问foo.com/category/bar,它在bar.aspx中显示视图。在该视图上是foo.com/files/theta.pdf的链接,它在浏览器中加载就好了。但是,除非用户已经过身份验证,否则我不希望从浏览器访问foo.com/files/theta.pdf。

如果没有先通过foo.com/account/logon进行身份验证,如何阻止用户直接从浏览器访问foo.com/files/theta.pdf?

4 个答案:

答案 0 :(得分:8)

通过控制器传递请求,并返回FileResult。您可以使用Authorize属性或通过检查控制器方法内的权限,将所需的任何安全性应用于控制器方法。

this question有一个代码示例,说明了如何返回图像文件。只需返回您的pdf而不是图像文件,并使用application/pdf作为MIME类型。

答案 1 :(得分:5)

如果您想限制对/files目录的所有访问权限,只需使用location中的web.config元素来限制访问权限。

E.g。

<location path="~/files">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>

我应该补充一点,我同意Robert和Rob的高级安全性,但如果你只是想要一个简单的解决方案,这应该可以解决问题。 : - )

HTHS,
查尔斯

答案 2 :(得分:1)

使用FileResult,我相信它是一个内置的ActionResult。这将发回您可以获得各种授权的二进制数据:

http://msdn.microsoft.com/en-us/library/system.web.mvc.fileresult.aspx

答案 3 :(得分:0)

如果您使用的是ASP.NET Core,则可以使用Resource-based authorization

授权策略取决于所访问的资源。考虑具有作者属性的文档。只允许作者更新文档。因此,必须先从数据存储中检索文档,然后才能进行授权评估。