我正在网站上实现登录/注销功能。每当用户点击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()
的地方重定向?
答案 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 ...
}
这只是一个黑客,希望这有帮助。