文件下载时的MVC身份验证

时间:2013-12-18 06:56:31

标签: c# .net asp.net-mvc

如何在允许用户“src”图像或下载文件之前对Web用户进行身份验证?还有一些条件是这些文件是公开的。
我在考虑在RegisterGlobalFilters中的global.asax中添加一个过滤器
过滤器就像......

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

3 个答案:

答案 0 :(得分:2)

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

示例:

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

答案 1 :(得分:0)

使用表单身份验证并检查Cookie。

答案 2 :(得分: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>

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