Web.config Forms Auth>保护root但允许访问子目录

时间:2012-04-10 10:41:50

标签: asp.net iis iis-7 web-config forms-authentication

这是我的问题......

我有一个以II7集成管道模式运行的网站,我想在整个网站上启用表单auth,而不是包含登录表单的'/ secure /'目录。

我的网络配置目前看起来像这样......

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <customErrors mode="Off"/>
        <authentication mode="Forms">
            <forms name=".ASPXAUTH" loginUrl="secure/login.aspx" protection="All" path="/" timeout="999999" slidingExpiration="true" enableCrossAppRedirects="true">
                <credentials passwordFormat="Clear">
                    <user name="user1" password="xxxxxx"/>
                </credentials>
            </forms>
        </authentication>
        <authorization>
            <allow users="user1"/>
            <deny users="*"/>
        </authorization>    
    </system.web>
    <location path="secure">
        <system.web>
            <authorization>
                <allow users="*"/>
            </authorization>
        </system.web>
    </location>
    <system.webServer>
        <!--Enabling Forms Authentication for the Entire Application-->
        <modules> 
            <remove name="FormsAuthenticationModule" />    
            <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />    
            <remove name="UrlAuthorization" />    
            <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />    
            <remove name="DefaultAuthentication" />    
            <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />    
        </modules>
    </system.webServer>
</configuration>

当我访问网站网址时,我只能获得无限循环的重定向。我已经尝试将位置特定的auth规则放在system.web部分之上,但这没有效果。

有什么想法吗?

干杯,

罗宾

1 个答案:

答案 0 :(得分:3)

访问权限是分层的。也就是说,如果您被禁止访问某些父级,则无论对子级设置了什么权限,都禁止您访问其所有子级。 您可以将登录表单移动到根目录并设置表单的权限 - 它将起作用。