我的网站根目录下有一个目录,其中包含一些文件(通常是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
身份验证。
答案 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 身份验证时,请参阅