如何将用户重定向到特定页面作为会话过期或放弃

时间:2015-05-04 08:34:18

标签: c# asp.net session

我只使用会话对象创建一个登录页面。在会话中存储一些值(userId,userName,UserRoleId)。据我所知,会话的默认时间是20分钟。我希望如果用户正在观看某个页面并且会话到期,则将其重定向到登录页面。如果特定会话到期,是否有可能发生自动的事件?所以我在那里写逻辑。 我搜索关于global.asax然后我使用它但它不起作用..

void Session_End(object sender, EventArgs e) 
    {
        Response.Redirect("login.aspx");
    }

3 个答案:

答案 0 :(得分:0)

在您的母版页上:

Stopwatch stopWatch = new Stopwatch();

在您的母版页上加载:

public Page_Load()
{
if (!page.ispostback)
{

   System.Threading.Timer TimerForSessionExpire = new System.Threading.Timer(TickForSessionExpire, null, 0, 6000*60); // check after every 1 minute
}
else
{
   stopWatch.reset();
   stopWatch.start();
}
}

public void TickForSessionExpire()
{
   if (stopWatch.Elapsed.TotalMinutes>20)
   {
       Response.Redirect("login.aspx");
   }
}

我没有对此进行测试,但逻辑应该没问题。

答案 1 :(得分:0)

您可能必须使用javascript在客户端执行此操作。您可以调用一项操作来检查会话状态,然后通过为您的网页设置新位置来重定向用户。

如果要从服务器驱动它,可以使用Signalr和集线器。当会话到期时,集线器调用客户端(仍在js中),您将执行重定向。

答案 2 :(得分:0)

您可以为所有回复添加<meta http-equiv="refresh" content="1205; url=http://domain/login.aspx">

将页面重定向为20分钟加5秒后登录login.aspx。