Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于授权规则,asp.net 4 WebForms无法访问登录页_Asp.net_Webforms - Fatal编程技术网

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

由于授权规则,asp.net 4 WebForms无法访问登录页,asp.net,webforms,Asp.net,Webforms,我有一个default.aspx页面,我想拒绝匿名用户访问该页面,在同一文件夹(根文件夹)中,我有Logon.aspx,我显然希望匿名用户访问该页面。我已按上的指定尝试了以下操作,但在尝试访问Logon.aspx时得到401: <system.web> <authentication mode="Forms" > <forms loginUrl="Logon.aspx" name=".VISITAUTH"></forms>

我有一个
default.aspx
页面,我想拒绝匿名用户访问该页面,在同一文件夹(根文件夹)中,我有
Logon.aspx
,我显然希望匿名用户访问该页面。我已按上的指定尝试了以下操作,但在尝试访问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.asax.asax中的
Application\u BeginRequest
事件中编写一些代码来处理此问题,但我希望按照Microsoft告诉我的方式进行操作。

我决定改为创建一个名为admin的文件夹,其中包含整个应用程序,并将登录保留在根目录中,以便授权规则仅适用于管理员文件夹。要么是Microsoft支持是BS,要么是我遗漏了什么


注意:如果有人在未来几年偶然发现了这个帖子,我很乐意为您提供一个有价值的答案。

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


注意:如果有人在未来的几年里偶然发现了这个问题,我很乐意为您提供一个有价值的答案。

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

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