0

我正在努力将静态 PDF 文件的访问权限限制为仅登录用户。我只想在没有正确凭据的请求到来时使用来自资源的服务器端重定向。

我可以使用IHttpHandler并设置path值,但我不想手动提供文件。我希望登录用户的请求直接通过,更像是一个IHttpModule,除了我无法设置路径来限制模块将执行的文件。

有没有办法通过处理程序传递请求,或限制模块的路径?

编辑

还需要注意的是,如果登录成功,我想使用特定的查询字符串参数将用户重定向到登录页面,将用户重定向回资源。

4

1 回答 1

2

如果这些确实是静态资源(存在于磁盘上),那么您可以将它们粘贴在一个文件夹中,并使用web.config 中 的location 元素限制该文件夹

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

这将防止任何未经授权的用户能够访问位于MyPDFs您站点内文件夹中的任何文件。

如果您只想要这些文件的一个子集,那么您可以创建一个子目录,并以类似的方式保护它。

<location path="PDF/SecureSubDirectory">
   <system.web>
      <authorization>
         <deny users="?"/>
      </authorization>
   </system.web>
</location>

更新:

还可能需要注意的是,如果登录成功,我想使用特定的查询字符串参数将用户重定向到登录页面,将用户重定向回资源。

在 ASP.Net 中使用表单身份验证时,这一切都默认为您处理

任何因用户尚未通过身份验证而失败的资源请求都将自动重定向到 web.config 中定义的配置登录页面。

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH">
    </forms>
  </authentication>
</system.web>

它附加一个查询字符串参数,该参数引用最初请求的资源。一旦用户成功通过身份验证,他们就会被重定向回他们最初请求的 URL。

所有这些都被纳入框架:)

于 2012-01-05T20:39:34.667 回答