子窗口重定向
本文关键字:重定向 窗口 | 更新日期: 2023-09-27 18:17:34
我正在开发一个网站在asp.net &c#。我对javaScript不太熟悉,但我在一些地方会用到一点。为了创建一个弹出窗口,我使用了以下javaScript代码:
<script type="text/javascript" language="javascript">
function OpenCallUpdatePop(popUrl) {
CallUpdatePop = window.open(popUrl, 'callUpPop', 'toolbar=no, location=yes, scrollbars=yes, width=900, height=700')
setTimeout('CallUpdatePop.scroll(0,100)', 1000)
}
</script>
参数popUrl由以下c#代码填充:
string updateUrl = string.Format("UpdatePopUpPage.aspx");
ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script language=JavaScript>OpenCallUpdatePop('" + updateUrl + "');</script>");
我在会话超时前的页面上设置了一个计时器,以便重定向到注销页面,其中FormsAuthentication.SignOut();发生。从子窗口到LogOut页面的Response.Redirect()不起作用,所以我尝试了一个javaScript函数:
function closeThis() {
self.close()
}
从以下c#代码调用:
protected void timerLogOut_Tick(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<scriptlanguage=JavaScript>closeThis();</script>");
}
页面不会关闭,而是重定向到默认页面,这是登录页面,但我希望它重定向到注销页面。如何使子页面关闭或重定向到LogOut页面或任何其他页面?另一种可能是改变网络的设置。从c#代码配置默认页面,以便页面将重定向到我想要的地方,这是可能的吗?
最可能的问题是您没有可用于匿名访问的LogOut页面,并且在完成页面导航之前会话实际上超时了。
当这种情况发生,你有一个loginUrl指定的表单验证块在web。配置,ASP。Net将自动将用户重定向到登录页面。
为了检测这种行为,我们添加了一个特殊的查询字符串参数,以便我们知道用户是否由于自动重定向而到达登录页面:
<authentication mode="Forms">
<forms name=".MYAUTH" loginUrl="default.aspx?reauth=1" protection="All" path="/" slidingExpiration="true" timeout="60" />
</authentication>
您可以通过在web.config中添加以下内容来确保登出页面始终可访问:
<location path="logout.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
如果注销页面的目的只是向用户提供有关发生的事情的一些信息,那么实际上可以完全忽略注销页面,只依赖于自动重定向querystring参数,在用户返回到登录页面时向用户提供消息。例如,在登录页面中:
<script language="javascript" type="text/javascript">
<!--
if (window.location.search != "") {
if (window.location.search.indexOf("reauth=1") != -1) {
alert("Your login credentials have expired. Please log in again to continue.");
}
}
-->
</script>