我有一个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}}事件中编写一些代码来处理这个问题,但希望按照微软告诉我的方式做事。
答案 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只提到原始路径。