我有一个 Web 应用程序,一些使用 Chrome 作为首选浏览器的用户在注销应用程序并尝试重新登录时收到以下错误。
“此网页有重定向循环”。
我的 Web 应用程序使用表单身份验证,并且FormAuthenticationModule
将用户重定向回我的应用程序的登录页面,因此我无法使用此方法:
<customErrors mode="On" defaultRedirect="~/MyErrorPage.aspx" >
<error statusCode="401" redirect="~/NoAccess.aspx"/>
</customErrors>
相反,我将以下内容添加到Page_Load
我的事件LoginPage
.
if (Request.IsAuthenticated && !string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
{
Response.Redirect("~/NoAccess.aspx");
}
但是,由于我添加了这种方法,用户似乎收到“重定向循环”错误。
清除cookie后,一切看起来都很好,但问题又出现了。
是否有可以添加到我的代码中的永久解决方案,或者我可以采取其他措施来防止此问题发生?
尝试将其添加到您的web.config
file:
<location path="NoAccess.aspx">
<system.web>
<authorization>
<allow users="?"/>
<allow users="*"/>
</authorization>
</system.web>
</location>
这将关闭此页面的任何授权,并且应该停止您的循环。
您还可以添加以下内容:
<location path="Login.aspx">
<system.web>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
</system.web>
</location>
这将拒绝所有已通过身份验证的用户访问您的登录页面。
将这两者结合起来应该允许您为所有重定向添加自定义错误。
您还可以考虑创建一个目录以供未经授权的访问(例如public/
)并放入所有错误页面(不需要授权)。
然后你可以这样做:
<location path="public">
<system.web>
<authorization>
<allow users="?"/>
<allow users="*"/>
</authorization>
</system.web>
</location>
您可以阅读有关位置的更多信息here。
以及有关授权的更多信息here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)