防止在asp.net MVC中直接访问文件

时间:2015-02-21 18:25:01

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

我有一个名为PrivatePdf的文件夹,它是可读写的,我存储了用户的pdf文件。我想只允许用户自己通过直接粘贴链接来访问pdf文件。例如:当其他用户将链接abc.com/PrivatePdf/123.pdf粘贴到浏览器中时,它不会显示pdf文件。

注意:PrivatePdf文件夹允许读/写,我不希望将其保存到App_Data文件夹中。用户身份验证基于asp.net身份

1 个答案:

答案 0 :(得分:0)

如果您使用的是Windows身份验证(不太可能),则可以使用文件系统级权限。否则,我建议您为该文件夹中的所有(或者可能只是PDF)文件设置处理程序,并实现您自己的限制逻辑。 要注册处理程序,您需要将以下内容添加到文件夹中的新web.config中:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <httpHandlers>
            <add verb="*" path="*.pdf" type="MyHandler, MyAssembly"/>
       </httpHandlers>
    </system.web>
</configuration>

处理程序必须实现IHttpHandler,并且在其ProcessRequest方法中,您需要通过查看HttpContext.User.Identity.IsAuthenticated或HttpContext.User.Identity.Name来检查用户是否经过身份验证,并查看用户是否具有对假装的文件,可从HttpContext.Request属性获得。