当服务器会话过期时,使用javascript的settimeout()函数重定向到登录页面

Redirecting to Login page using javascript's settimeout() function when server session expires

本文关键字:函数 重定向 登录 settimeout 过期 会话 服务器 javascript 使用      更新时间:2023-09-26

服务器会话过期后,用户必须重定向到登录页面。为此,当用户在web.config中给定的超时时间内处于非活动状态时,使用SetTimeout()函数。

<sessionState mode="InProc" cookieless="false" timeout="30" />
Master Page load 

StringBuilder script = new StringBuilder();
            script.Append("function expireSession(){ 'n");
            script.Append("var jsId = document.cookie.match(/JSESSIONID=[^;]+/);");
            script.Append("if jsId == null) ");
            script.Append("{");
            script.Append(string.Format("window.location='{0}';", ResolveUrl("~/Login.aspx")));
            script.Append("}");
            script.Append("} 'n");
            script.Append(string.Format("setTimeout('expireSession()', {0}); 'n", this.Session.Timeout * 60000));             
        this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "expirescript", script.ToString(), true);

但是它不起作用。有什么建议吗?

  protected override void OnPreRender(EventArgs e)
 {
  base.OnPreRender(e);
   AutoRedirect();
 }
   public void AutoRedirect()
  {
      int int_MilliSecondsTimeOut = (this.Session.Timeout * 60000);
      string str_Script = @"
     <script type='text/javascript'> 
     intervalset = window.setInterval('Redirect()'," + int_MilliSecondsTimeOut.ToString() + @");
   function Redirect()
    {
        alert('Your session has been expired and system redirects to login page now.!'n'n');
        window.location.href='/login.aspx'; 
    }
     </script>";
        ClientScript.RegisterClientScriptBlock(this.GetType(), "Redirect", str_Script);
     }
   }

查看此url

http://www.aspsnippets.com/Articles/Automatically-redirect-User-after-Session-Timeout-in-ASPNet.aspx

我希望这对你有帮助