【问题标题】:Web.config Location element functioning incorrectlyWeb.config 位置元素功能不正确
【发布时间】:2010-08-30 06:33:09
【问题描述】:

环境: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 链接不会重定向。相反,表单身份验证先于并重定向到登录 url,ReturnURL 查询字符串指向忘记密码页面。

问题很简单:如果在登录之前考虑元素并正确地将其排除在表单身份验证之外,为什么发布登录和注销它会在表单身份验证的范围内。

请注意,在清除浏览器历史记录时,该功能按预期工作。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: c# asp.net web-config forms-authentication


    【解决方案1】:

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

    我可能会如何在根 中配置它,我会:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      相关资源
      最近更新 更多