【问题标题】:ASP.Net Directory SecurityASP.Net 目录安全
【发布时间】:2012-02-03 07:40:50
【问题描述】:

我的网站根目录有一个目录,其中包含一些文件(通常是 html)。只有登录用户才能访问这些文件。我怎样才能做到这一点?我相信这可以使用模拟来完成,但我不知道如何准确地实现它。你能指导我正确的方向吗?

目前,我已将这些设置添加到我的 Web.config 文件中:

<location path="TestData"> <!-- 'TestData' is the directory which I want to deny access for -->
    <system.web>
        <identity impersonate="true"/>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

在编码方面我有什么需要做的吗?

PS:这是一个网络服务应用程序。

更新:它可以部分工作!!!再具体一点: 它只拒绝.aspx 页面,甚至登录用户也无法访问这些文件。

我正在使用Windows 身份验证。

【问题讨论】:

    标签: asp.net web-services impersonation


    【解决方案1】:

    你不需要冒充。如果您有表单或 Windows 身份验证,您的 &lt;deny users="?"/&gt; 将拒绝所有匿名用户。要回答您的问题:不,您不必在代码中明确拒绝任何用户。

    How to: Implement Simple Forms Authentication

    为了保护非 ASP.NET 文件,您需要注册一个 HttpHandler 来执行此操作。请看this reference on how to register the handler

    【讨论】:

    • @Knvn 你删除了impersonate 部分吗?您不应该获得部分访问权限,因为您拥有目录授权。
    • 是的,我尝试删除 impersonate 部分,但它仍然仅适用于 .aspx 而不适用于其他类型,例如 .html.txt
    • @Knvn 看到我的编辑。这是因为这些是 ASP.NET(出于性能原因)不保护的文件。您需要实现IHttpHandler 来为这些文件时间创建自己的处理程序并注册它们。我上面的帖子中的信息。
    • 非常感谢...现在它适用于所有类型。但是,还有一个问题没有解决!即使我已登录,我也无法浏览该文件!
    • @Knvn 这样您就可以访问它但不能浏览它?
    【解决方案2】:

    你不需要冒充。模拟是为了使应用程序以不同于 iis 中应用程序池用户的用户身份运行。 source

    如果您使用的是表单/Windows 身份验证,那么

    <authorization>
        <deny users="?"/>
    </authorization>
    

    应该足够了,并且会屏蔽未登录的用户

    【讨论】:

      【解决方案3】:

      你需要添加

      <authorization>
            <deny users="?"/>
      </authorization>
      

      &lt;system.web&gt;&lt;/system.web&gt;

      并使用表单身份验证,例如

      [更新]:当您使用 windows 身份验证时,请参阅

      MSDN

      【讨论】:

      • 我可以使用Forms 身份验证,如果它是一个 Web 应用程序......但它是一个 Web 服务应用程序,我通过将适当的值返回给客户端应用程序(闪存)来进行身份验证。跨度>
      猜你喜欢
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      相关资源
      最近更新 更多