【发布时间】:2010-02-08 22:14:20
【问题描述】:
我们有一个 ZIP 文件库,希望在 ASP.NET 站点上可供下载。
文件位于可从外部网络场访问的 NAS 设备上。
这是我们最初的策略:
- 将 IIS 虚拟目录映射到路径 /zipfiles 处的共享驱动器
- 用户可以在给定 URL 后下载 zip 文件
但是,如果用户共享文件的链接,任何人都可以下载它们。相反,我们希望在我们的站点中使用 ASP.NET 表单身份验证来验证用户的请求,然后再开始文件传输。
几个问题: 对 zip 文件的请求由 IIS 而非 ASP.NET 处理。所以它不受表单身份验证的约束。 此外,我们不希望 ASP.NET 处理该请求,因为它占用了 ASP.NET 线程并且无法扩展以下载大文件。因此,配置 asp.net dll 来处理 *.zip 请求不是一种选择。
对此有何想法?
我们折腾的一个想法是: 初始下载请求将针对 ashx 处理程序。此处理程序将在身份验证后生成一个下载令牌,该令牌保存到数据库中。然后,用户被重定向到在 QueryString 中附加了令牌的文件(例如 /files/xyz.zip?token=123456789)。 ISAPI 插件将用于检查令牌。此外,令牌将在 x 时间后过期。 对此有什么想法吗?我还没有实现 ISAPI 插件,所以我不确定这是否可行。
我想避免自定义编码,因为安全是一个问题,我更愿意使用经过时间考验的解决方案。
【问题讨论】:
标签: iis authentication iis-6 forms-authentication isapi