在Response.Redirect之后检测会话超时?

时间:2016-09-13 02:44:13

标签: asp.net

我正在网站上实现登录/注销功能。每当用户点击Sign out按钮(登录页面的任何位置,Login.aspx)时,将执行以下方法:

protected void SignOut(object sender, EventArgs e)
{
    Session.Abandon();
    Response.Redirect("Login.aspx");
}

现在,当重定向发生时,我想在Login.aspx中执行以下操作:

protected void Page_Init(object sender, EventArgs e)
{
    if ( Session_has_timed_out ... )
        SessionTimeOutDIV.Text = "Session timed out. Please log in again.";
    else
    {
        // normal logic here ...
    }
}

问:我如何检查会话先前已被终止,因为我需要在实际调用Session.Abandon()后检查此(1)和(2)我之后从调用Session.Abandon()的地方重定向?

1 个答案:

答案 0 :(得分:1)

是的,这就是为什么要进行身份验证,建议依赖cookie并使用formsAuth或现在的ASP.Net Identity。如果它是MVC我们有TempData但是对于webforms我不认为有任何这样的事情。因此,您可以使用其他状态管理技术,如查询字符串

Response.Redirect("Login.aspx?Logout=true");

在Login.aspx的page_init中

    if (Request.QueryString["LogOut"] != null && Request.QueryString["LogOut"] == "true") //do handle exception and casting
    {
        //SessionTimeOutDIV.Text = "Session timed out. Please log in again.";
    }
    else
    {
        // normal logic here ...
    }

这只是一个黑客,希望这有帮助。