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

时间:2016-02-18 17:34:09

标签: asp.net webforms

我有一个default.aspx页面我想拒绝访问匿名用户,并且在同一个文件夹(根文件夹)中我有Logon.aspx我明显希望匿名用户访问。我按照Microsoft's support site的规定尝试了以下内容,但在尝试访问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>

有没有人知道我错过了什么?我的另一个选择是在Application_BeginRequest的{​​{1}}事件中编写一些代码来处理这个问题,但希望按照微软告诉我的方式做事。

2 个答案:

答案 0 :(得分:0)

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

注意:如果有人在未来几年遇到这个问题,我会很乐意给你一个有价值的答案。

答案 1 :(得分:0)

我最近开始使用.Net 4.x / Visual Studio 2015(从VS2008升级),当我想为工作的Web应用程序添加快速简单的身份验证机制时遇到了同样的问题。吸引我注意的一件事是网址重写:当输入“Login.aspx”时,网址变为“登录”,没有.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只提到原始路径。