2013-12-18 73 views
1

如何在允许用户“src”映像或下载文件之前验证Web用户?还有一些条件是这些文件是公开的。
我想在RegisterGlobalFilters在Global.asax中添加过滤器

过滤器是一样的东西..
MVC身份验证文件下载

public void OnFileRequest(string passToken) 
{ 
    //validate passToken 
    if (isValid(passToken)) 
     //allow download 
    else 
    { 
    //authenticate using session 
    if (authenticated) 
     //allow download 
    else 
     //return exception 
    } 
} 

回答

0

使用窗体身份验证和检查饼干。

+0

这些文件在公共位置有一定的条件。我更新了我的问题。 – evilom

+0

这个答案没有解决OP如何处理二进制文件,而不是ASP.NET运行时管理的页面或MVC视图。 – pwdst

1

不是直接链接到实际内容,而是存储将唯一标识符(GUID?)映射到实际文件的字典。然后,您可以使用操作结果来允许下载与否。

实施例:

public ActionResult GetImage(Guid id){ 
    if(SomeFunctionToDetermineIfAllowed()){ 
     return new FileResult(...); 
    }else{ 
     return RedirectToAction("NotFound"); 
    } 
} 
+0

这就是我现在正在做的事情,因此需要花时间来流文件。 – evilom

+0

这是什么意思,需要时间来流文件?除非您有非常奇怪的/未经过优化的授权,否则对授权的检查应毫不夸张地说。现在,如果文件的大小不可忽略,那么下载文件需要一些时间。 – Tommy

+0

是的,如果只有最小的用户访问权限,这不是问题。我正在一个多公司的网站上工作,并且会有很多用户请求来访问或源文件。流式处理文件会消耗内存资源,并且可能会在将来出现问题。 – evilom

0

存储在一些文件夹,其可根据要求下载(以验证用户)中的文件

为了实现这一点,请按照步骤。

  • 的文件夹(其中存储的文件)必须有一个web.config文件或正常web.config文件必须具有定义限制用户认证以验证用户仅。 使用以下xml标签。登录的用户(特定)

    <location path="~/Download_url_page(Folder,File url).aspx"> 
    
        <system.web> 
    
         <authorization> 
    
         <allow users="John"/> // allow John to Download file. 
         <deny users="*"/> // deny others 
    
         </authorization> 
    
        </system.web> 
    
    </location> 
    

原路/登录的用户(不具体,但身份验证的用户)。下载可能受到限制。

<authorization>

<deny users="?"/> //this will restrict anonymous user access

</authorization>

我希望这能解决你的问题。

+0

这些文件在公开发布时存在一定的条件。我更新了我的问题。 – evilom

+1

这只适用于通过aspnet注册的文件类型 –