首页 文章

自定义session_end重定向实现?

提问于
浏览
0

我在MVC应用程序中工作 . 我要求在会话结束时,应用程序应重定向到主页 . 我需要一般地实现这个逻辑 .

我做了一些研究,看起来有一个要求是我需要在global.asax中的Session_Start中设置任何会话 . 然后,当会话到期时,应该触发global.asax中的Session_End . 在会话结束时,我需要确保:

  • 用户被重定向到登录页面 . 我可以重定向到Session_End中的基本URL来完成此任务 .

  • 当用户重新登录时,他应该被重定向到会话到期时他所在的页面

对我来说,完成上述#1和#2的最佳方式是什么?

protected void Session_Start(object sender, EventArgs e)
    {
        Session["X"] = 1;
    }

    protected void Session_End(object sender, EventArgs e)
    {

    }

1 回答

  • 0

    重定向只能在HTTP响应中发出(它是响应头,通常是302状态) . HTTP响应只能在响应HTTP请求时发送 . 因此,如果您想重定向浏览器,则只能在请求下一页时执行此操作 . 当session_end事件发生时,您无法神奇地触及浏览器并使其执行某些操作 .

    将此作为服务器端事件处理不是正确的方法 . 您需要将Javascript添加到页面以跟踪剩余的会话时间并使用location.href而不是使用重定向 . 例如,对于十分钟的超时,您可以使用以下内容:

    setTimeout(function(){ location.href="https://www.example.com/timeout.aspx"; }, 600000);
    

相关问题