0

我对ASP.NET Web窗体使用窗体身份验证并成功验证用户身份。ASP.NET Web窗体授权允许匿名用户访问特定页面

通过web.config中的这些授权设置,匿名用户只能访问登录页面。

<authorization> 
    <deny users="?" /> 
    </authorization> 

<location path="SubFolder"> 
    <system.web> 
     <authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

我试图使用位置标记来进一步允许额外的页面的匿名访问,但它们将被忽略:

<location path="SubFolder/LoggedOut.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="?" /> 
     </authorization> 
    </system.web> 
    </location> 

继ASP.NET设置继承位置标记中的授权标记应覆盖全局授权标记。

系统通过构建URL的所有规则的合并列表来确定哪个规则优先,列表头部使用最近的规则(层次结构中最近的规则)。 (link

我怎么能拒绝所有的网页,但那些我指定的匿名访问?

对此question的回答表明我所做的是正确的。但它似乎不适合我。那么为什么会发生?有没有办法找出当我尝试访问一个页面时设置阻止访问的设置?有什么我失踪?

回答

0

显然,限制较少的文件不能位于受限制的目录中。 但是,对限制较少的目录也是这样。

最后我用下面的web.config文件放置在根目录下的公共文件和所有安全文件中的子文件夹:

... 
    <authorization> 
    <allow users="*" /> 
    </authorization> 
... 
    <location path="SubFolder"> 
    <system.web> 
     <authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
... 

在.NET框架4.5测试时,Visual Studio 2015年企业

相关问题