窗体身份验证忽略默认文档

我花了一天半的时间试图解决这个问题。 Bascially有一个ASP.net的网站使用框架4.0的IIS7窗体身份验证。

该授权的东西似乎是工作完美地为每一个场景,除了没有文件specifed击中它的(应解析为默认文件)。

例如(请不要在恶劣的现场仍然可以开发;)),http://www.rewardroster.com/Default.aspx完美的作品,这个页面应该允许在web.config中指定的匿名访问。

但如果我打www.rewardroster.com直接将其重定向到登录页面返回URL设置为“/”或为Login.aspx?RETURNURL =%2F

有些事情我已经尝试:

1)认证设置为无,然后默认的文档工作得那不是问题。

2)增加DefaultDocument属性来的Web.config

3)删除了所有条目的默认文档列表在IIS中除了Default.aspx的

在配置4)新增的machineKey入口

5),从切换到集成在IIS经典管道

这是什么在我的配置:

<authentication mode="Forms"> <forms name="appNameAuth" loginUrl="Login.aspx" protection="All" timeout="60" slidingExpiration="true" defaultUrl="Default.aspx" path="/"> </forms> </authentication> </authentication> <location path="Default.aspx">

非常感谢您的时间,并希望有人知道是怎么回事。

--------------解决方案-------------

这是我的解决方案:

Global.asax ,方法Application_BeginRequest将以下内容:

if (Request.AppRelativeCurrentExecutionFilePath == "~/")
HttpContext.Current.RewritePath("HomePage.aspx");

尼斯和简单,你必须建立在你身边想,如果你的网站使用的是基于配置变量多个主页使用什么样的主页逻辑的机会。

Dmitry.Alk

尝试打根路径,我试了前面提到的一切,当我看到这个相同的问题。 这似乎Asp.net 4.0增加了两个ExtensionlessUrl模块的applicationHost.config为IIS 7,您可以通过添加删除这些模块以下为你的web.config

<system.webServer>
<handlers>
<remove name="ExtensionlessUrl-Integrated-4.0"/>
<remove name=" ExtensionlessUrl-ISAPI-4.0_32bit "/>
</handlers>
</system.webServer>

附加信息

Microsoft知识库

如何扩展名的URL由ASP净V4被处理

我有一个类似的问题。 没有样式时没有登录我,www.site.nl \重定向到登录页面(用URL重定向到一个家庭页)并输入www.site.nl \家庭(同一网页的重定向URL中前)并不需要登录。

解决方法是:

  • 打开IIS
  • 打开IIS:身份验证
  • 打开并编辑匿名访问
  • 检查用户(我改变了用户对app.pool用户)
  • 给网站上的root用户权限(在文件系统上)

这工作对我来说。

祝你好运

最后我做修复这是写几行代码在我的登录页面,以检查的“/”一个的Request.QueryString [“RETURNURL”]什么。 如果发现的话,就重定向到Default.aspx的。

我找不到任何办法,而不指定页面(如www.mysite.com),使窗体身份验证不拦截来电。 :(我甚至尝试.NET 4 URL路径,但这并没有阻止表单验证劫持的要求要么。

下面是我用的Login.aspx代码:

protected void Page_Load(object sender, EventArgs e)
{
if (!(IsPostBack || IsAsync))
{
string returnUrl = Request.QueryString["ReturnUrl"];
if (returnUrl != null)
if (returnUrl == "/")
Response.Redirect("default.aspx");
}
}

约翰的解决方案,为我工作,但前提是请求是为站点根目录。

我的网站是这样组织的:

  • WWW。[mysite的]的.com / login.aspx的
  • WWW。[mysite的]的.com / Default.aspx的
  • WWW。[mysite的]的.com / [somestuff] /default.aspx
  • WWW。[mysite的]的.com / [morestuff] /default.aspx

下面约翰的很好的意见后,要求到www。[mysite的] .com上得到了定向到表单登录页面,登录后,默认页面。 但是,如果有人要求“/ [somestuff] /”,它仍然是行不通的。

我得到了它通过在[somestuff]启用匿名身份验证和[morestuff]目录,然后禁用它在这些目录中的单个文件进行操作。 这不是一个安全的设置我想支持,给了人们既可以拿到哪里去了,从Default.aspx的,或只是请求[somestuff] /default.aspx开始。 但现在我知道为什么它失败。 看来你需要在其上要使用的默认文档目录的匿名访问。

我今天也有类似的问题。 我试图使用集成的管道,以确保non-asp.net资源(静态文件,PHP等)。

我在我的根web.config是有一个规则,那我就允许逐个访问特定资源的情况。

这个工作,除了要求“/”可能永远不会被验证(无休止地重定向到登录页面),同时要求“/Default.aspx”被罚款。

我的问题是,因为Asp.Net UrlAuthentication模块已启用所有资源类型,显然这并没有对我的情况下工作。 相反,我不得不改变该模块的工作只托管资源并安装IIS7的非托管的URL验证。 然后我不得不配置(因为它使用不同的身份验证设置),并确保该RoleManager启用非托管资源(因为我是在验证角色)。 此URL可能会有所帮助:http://learn.iis.net/page.aspx/142/understanding-iis-70-url-authorization/

我遇到了同样的问题,解决的是这样的:

在Global.asax中Dmitry.Alk解决方案身边我说:

if (Request.AppRelativeCurrentExecutionFilePath.ToLower() == "~/default.aspx")
HttpContext.Current.RewritePath("Default.aspx");
if (Request.AppRelativeCurrentExecutionFilePath.ToLower() == "~/")
HttpContext.Current.RewritePath("Default.aspx");
if (Request.AppRelativeCurrentExecutionFilePath.ToLower() == "~")
HttpContext.Current.RewritePath("Default.aspx");

分类:asp.net 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.413 (s). 10 q(s)