繁体   English   中英

asp.net 4 WebForms由于授权规则而无法访问登录页面

[英]asp.net 4 WebForms cannot access login page because of authorization rule

我有一个default.aspx页面,我想拒绝对匿名用户的访问,并且在同一文件夹(根文件夹)中,我有Logon.aspx ,我显然希望匿名用户访问。 我已经尝试按照Microsoft支持网站说明进行以下操作,但是尝试访问Logon.aspx时得到401:

<system.web>
    <authentication mode="Forms" >
      <forms loginUrl="Logon.aspx" name=".VISITAUTH"></forms>
    </authentication>
    <authorization>
        <deny users ="?" />
    </authorization>
</system.web>
<location path="Logon.aspx">
      <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
      </system.web>
</location>

有谁知道我想念的东西吗? 我的另一个选择是在global.asaxApplication_BeginRequest事件中编写一些代码来处理此问题,但希望按照Microsoft告诉我的方式进行操作。

我决定要做的是创建一个名为admin的文件夹,其中包含整个应用程序,并将登录保留在根目录中,因此授权规则仅适用于admin文件夹。 Microsoft支持是BS,还是我缺少了一些东西。

注意:如果在未来的几年中有人绊倒这个线程,我将很高兴为您提供一个值得我给予答复的荣誉。

我最近开始使用.Net 4.x / Visual Studio 2015(从VS2008升级),当我想向工作的Web应用程序添加快速简单的身份验证机制时遇到了相同的问题。 引起我注意的事情之一是URL重写:当输入“ Login.aspx”时,Web地址更改为“ Login”,没有.aspx扩展名,因此我尝试了一些方法,下面是一个解决方案:

<system.web>
    <authentication mode="Forms" >
      <forms loginUrl="Logon.aspx" name=".VISITAUTH"></forms>
    </authentication>
    <authorization>
        <deny users ="?" />
    </authorization>
</system.web>
<location path="Logon.aspx">
      <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
      </system.web>
</location>
<location path="Logon">
      <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
      </system.web>
</location>

第二个位置(“ Logon”)是第一个位置(“ Logon.aspx”)的重写,因此需要相同的授权规则。

事后看来,对我来说,两条路径都需要被授予访问权限似乎是合乎逻辑的。 尽管需要显式地进行操作,但这是不合逻辑的,而表单身份验证的loginUrl仅提及原始路径。

暂无
暂无

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

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