asp.net config deny users =“?”不适用于所有文件

时间:2012-09-09 16:17:51

标签: asp.net iis iis-7

我有一个网站,并在其下面有一个应用程序。

在这里点击http://msdn.microsoft.com/en-us/library/ff648341.aspx后,我在应用程序中创建了一个安全文件夹。

然后web.config被添加到应用程序的文件夹中,但我仍然可以访问安全文件夹我做错了什么?

<?xml version="1.0"?>
<configuration>
    <system.web>
    </system.web>
  <!-- The secure folder is for authenticated and SSL access only. -->
  <location path="Secure" >
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>  
</configuration>

更新:最后我有一个index.html,当我用Default.aspx替换它时,它确实有效。

然后如何在不添加扩展名的情况下保护任何文件:(

4 个答案:

答案 0 :(得分:2)

可能缺少身份验证标记。这段代码适合我:

<system.web>
    <identity impersonate="true"/>
    <authentication mode="Forms">
        <forms cookieless="AutoDetect" protection="All" slidingExpiration="true" loginUrl="~/login.aspx"/>
    </authentication>
    <authorization>
        <deny users="?"/>
    </authorization>
</system.web>
<location path="styles">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>
<location path="images">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>
<location path="scripts">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

答案 1 :(得分:1)

我认为您不需要空的第一个system.web,并且您不需要将第二个包装在位置标记中。

答案 2 :(得分:1)

我认为你唯一缺少的是:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true"></modules>
</system.webServer>

<system.web>
    <authentication mode="Forms">
        <forms loginUrl="Default.aspx">
        </forms>
    </authentication>
</system.web>

这就是我所拥有的并且有效:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true"></modules>
</system.webServer>
<system.web>
    <authentication mode="Forms">
        <forms loginUrl="Default.aspx">
        </forms>
    </authentication>
</system.web>
<location path="secure">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>

答案 3 :(得分:0)

试试这个

   <configuration>
    <system.web>
   ...
   <authentication mode="Forms">
   <forms name="MyAppCookie" loginUrl="~/Login.aspx" protection="All" timeout="30" path="/" />
 </authentication>
  </system.web>
  ...
     //deny the access to annonymous users in the Secure directory
    <location path="Secure" >
      <system.web>
    <authorization>
    <deny users="?" />
   </authorization>
    </system.web>
   </location>  
</configuration>