繁体   English   中英

ASP.NET表单身份验证

[英]ASP.NET Forms Authentication

我具有以下ASP.NET表单身份验证配置:

<system.web>
  <authentication mode="Forms">
    <forms name="MembershipCookie" 
           loginUrl="Login.aspx" 
           protection="All" 
           timeout="525600" 
           slidingExpiration="true" 
           enableCrossAppRedirects="true" 
           path="/">
    </forms>
  </authentication>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>
<location path="Home.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location

如果匿名用户访问该站点并请求home.aspx是否应该拒绝他们访问并被踢到Login.aspx页面,因为第一个规则<deny users="?" /> <deny users="?" />将匹配,并且进一步处理将停止吗?

该站点在IIS7.5,ASP.NET 4.0上运行,并且将应用程序池配置为集成管道模式。

更新:

出现此问题的原因是理智地检查我对ASP.NET 4.0的表单身份验证行为的理解(实际上是正确的)。 有一个相关的后续问题,该问题描述了修补程序(也已引入Windows 2008R2 SP1)中看起来像是个错误的错误-KB980368:

ASP.NET 2.0和4.0在表单身份验证中似乎对根URL的处理不同

如果用户正在访问Home.aspx,它将使用<location />指定的Home.aspx配置部分,因此不会将该用户踢出Login.aspx。

如果用户访问Home.aspx,则将应用第二条规则,即

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

这里要注意的一点是: *告诉任何授权用户 (分配了任何角色或没有分配角色)都可以访问该页面,但是? 告诉未授权用户无法访问该页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM