允许匿名访问默认页面
我的ASP.NET Forms 4.0网站正在运行窗体身份验证。默认情况下,未经授权的用户被拒绝,然后我允许访问某些页面。 我有一个问题,允许访问默认的网址:http:/example.com。我在web.config中找到相关定义默认页:允许匿名访问默认页面
<defaultDocument>
<files>
<clear/>
<add value="default.aspx" />
</files>
</defaultDocument>
,我有这样的定位越权:
<location path="default.aspx">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
它的工作原理确定,当我去的完整URL:http://example.com/default.aspx,但重定向到登录页面如果我去http://example.com
任何想法我做错了什么?
我在响应(德米特里·)刚刚找到答案,类似的问题在这里SO:Forms Authentication Ignoring Default Document:
在Global.asax中,方法:的Application_BeginRequest,放置以下:
if (Request.AppRelativeCurrentExecutionFilePath == "~/")
HttpContext.Current.RewritePath("default.aspx");
曾任职像魅力!
你为我节省了很多头痛...是的,它是2015年,我仍在使用网络表单,谢谢! – 2015-04-01 03:50:07
这对我的作品在测试Web应用程序:
<location path="">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="Default.aspx">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
现在我不能让任“/”或“/Default.aspx” - 给一个尝试(但使用allow
代替) 。
我刚刚想出了如何解决这个问题,而不必欺骗重定向。
如果在从.Net 2转换到.Net 4之后我发生了这种情况,我从来没有在互联网上的任何地方找到我的解决方案,所以在这里。
如果像我一样的登录页面也是默认的页面,你需要确保你以下两件事情在web.config文件
添加这免除身份验证Default.aspx的(没这需要在.net 2)
<location path="default.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
而从这个
<forms name="myform" loginUrl="~/default.aspx" timeout="240" defaultUrl="~/home.aspx" slidingExpiration="true" protection="All" path="/" />
更改登录网址这个
<forms name="myform" loginUrl="~/" timeout="240" defaultUrl="~/home.aspx" slidingExpiration="true" protection="All" path="/" />
,你应该罚款各项工作NOWS,刚刚尝试过了两个不同的网站和它的伎俩,我
不是一个真正的解决方案,你只是将身份验证网址(login.aspx)更改为你的根目录。反对它的建议。 – 2015-12-09 20:57:56
我不喜欢做针对此问题的代码更改,尤其是因为我的网站在我的Windows Server 2008 R2机器上工作正常,但在我的Windows 7 SP1开发机器上无法正常工作。
事实证明,这个问题的根源是在Service Pack 1的Windows 7的更新:
http://support.microsoft.com/kb/2526854
的解决方案似乎是禁止添加的新的“ExtensionlessUrl”功能在SP1:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrl-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrl-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrl-Integrated-4.0" />
</handlers>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
显然,如果你正在使用ExtensionlessUrl
功能这不会为你工作,但是我在这里记录它为那些迁移遗留网站,想知道什么突然走ne错了。
我知道你在做什么错误 - 'path'匹配被请求的路径,而不是它被重定向到的路径(在服务器端),所以http://mysite.com与默认值不匹配。 ASPX。我不能帮你修复它,虽然:( – Ryan 2011-05-06 20:39:57
请参阅我的答案有关删除ExtensionlessUrl模块[窗体身份验证忽略默认文档:](http://*.com/questions/3824951/forms-authentication-ignoring-default -document) – 2011-07-07 13:26:21