C# Web.config位置元素运行不正确

C# Web.config位置元素运行不正确,c#,asp.net,web-config,forms-authentication,C#,Asp.net,Web Config,Forms Authentication,环境:ASP.NET 3.5、C#、表单身份验证、IIS 6 问题详细信息:我用表单身份验证设置了一个web.config文件,下面是位置元素,如下所示: <location path="Home/Common"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web&

环境:ASP.NET 3.5、C#、表单身份验证、IIS 6

问题详细信息:我用表单身份验证设置了一个web.config文件,下面是
位置
元素,如下所示:

<location path="Home/Common">
    <system.web>
       <authorization>
        <allow users="*" />
       </authorization>
    </system.web>
</location>

<location path="Business/Services">
   <system.web>
    <authorization>
        <allow users="*" />
    </authorization>
   </system.web>
</location>

主/公用文件夹包含我的
放弃密码.aspx

Login.aspx
页面被设置为
LoginUrl

第一次访问登录页面时(没有之前的cookies等),放弃的密码链接功能正常。它会根据需要重定向到页面。 但是,一旦用户登录,在注销时,ForgotPassword链接不会重定向。相反,表单身份验证在登录url之前并重定向到登录url,返回url查询字符串指向忘记密码页面

问题很简单:如果在登录之前,元素被认为并正确地排除在表单身份验证之外,那么为什么在登录之后和注销之后,它会进入表单身份验证的范围

需要注意的是,在清除浏览器历史记录时,该功能按预期工作

任何帮助都将不胜感激


谢谢。

使用问号(?)来允许/拒绝未经身份验证的用户更为常见。未经验证的用户是真正需要使用登录页面和密码重置功能的用户,因此允许所有用户(*)访问他们是不正确的配置。但是,您尚未发布整个Web.config。将有一个根配置用于处理“其他所有内容”的授权

我将如何在根目录中配置它,我将:

<authorization>
    <allow users="*" />
</authorization>

稍后在Web.config中,定义受保护的位置:

<location path="Business/Services">
    <deny users="?" />
</location>


它拒绝所有未经身份验证的用户访问该文件夹中的页面。您的登录和忘记密码页面将位于根文件夹中。无论如何,要么我遗漏了什么,要么您没有配置根身份验证,这可能会混淆ASP.NET的身份验证。

更常见的是使用问号(?)来允许/拒绝未经身份验证的用户。未经验证的用户是真正需要使用登录页面和密码重置功能的用户,因此允许所有用户(*)访问他们是不正确的配置。但是,您尚未发布整个Web.config。将有一个根配置用于处理“其他所有内容”的授权

我将如何在根目录中配置它,我将:

<authorization>
    <allow users="*" />
</authorization>

稍后在Web.config中,定义受保护的位置:

<location path="Business/Services">
    <deny users="?" />
</location>

它拒绝所有未经身份验证的用户访问该文件夹中的页面。您的登录和忘记密码页面将位于根文件夹中。无论如何,要么我遗漏了什么,要么您没有配置根身份验证,这可能会混淆ASP.NET的身份验证