环境:ASP.NET 3.5,C#,表单身份验证,IIS 6
问题详情:我有一个使用表单身份验证设置的web.config文件,以下是location
元素,如下所示:
<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>
Home / Common文件夹包含我的ForgotPassword.aspx
。
Login.aspx
页面设置为LoginUrl
第一次访问登录页面时(没有先前的cookie等),ForgotPassword链接功能正常。它根据需要重定向到页面。 但是,一旦用户登录,在注销时,ForgotPassword链接不会重定向。相反,表单身份验证先于并重定向到登录URL,并返回指向忘记密码页面的ReturnURL查询字符串。
问题很简单:如果在签署元素之前考虑并正确地从表单身份验证中排除,为什么发布登录并注销它会进入Forms身份验证的范围。
需要注意的是,在清除浏览器历史记录时,该功能可以按预期工作。
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:1)
更常见的是使用问号(?)来允许/拒绝未经身份验证的用户。未经身份验证的用户是真正需要使用登录页面和密码重置功能的用户,因此允许所有用户(*)访问它们的配置不正确。但是,您尚未发布整个Web.config。将有一个授权的根配置处理“其他一切。”
我可能如何配置它在root&lt; system.web&gt;中,我有:
<authorization>
<allow users="*" />
</authorization>
稍后在Web.config中,定义受保护的位置:
<location path="Business/Services">
<deny users="?" />
</location>
拒绝所有未经身份验证的用户访问该文件夹中的页面。您的登录和忘记密码页面将位于根文件夹中。无论如何,要么我缺少了某些东西,要么你没有配置root身份验证,这可能会使ASP.NET的身份验证混乱。