ASP.Net目录安全

时间:2012-01-05 13:22:25

标签: asp.net web-services impersonation

我的网站根目录下有一个目录,其中包含一些文件(通常是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:这是一个Web服务应用程序。

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

我正在使用Windows身份验证。

3 个答案:

答案 0 :(得分:1)

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

How to: Implement Simple Forms Authentication

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

答案 1 :(得分:0)

你不需要冒充。 Impersonate用于使应用程序作为与iis中应用程序池用户不同的用户运行。 source

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

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

应该足够并且会阻止未登录的用户

答案 2 :(得分:0)

您需要添加

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

中的

并使用表单身份验证          

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

MSDN