子窗口重定向

本文关键字:重定向 窗口 | 更新日期: 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>