2009-10-14 2 views
0

Я пытаюсь перенаправить мою страницу для зарегистрированного пользователя с определенной долей бездействия на другую страницу, не убивая сеанс.перенаправить пользователя после неактивности, но сохранить сессию в активном состоянии

Я хотел бы изложить время, проведенное на первой странице сеанса, поместить пользователя на новую страницу, а затем вывести пользователя из сети после его сеанса (остаток времени сеанса) и перенаправить пользователя на страницу входа в систему.

Я нашел это:

HttpContext.Current.Response.AppendHeader("Refresh", Convert.ToString(((HttpContext.Current.Session.Timeout * 2) - 5)) + "; Url=Dashboard.aspx"); 

, но это мешает моей главной странице:

Context.Response.AppendHeader("Refresh",Convert.ToString((Session.Timeout * 60)) + "; URL=" + ResolveUrl("~/Logout.aspx")); 

Если проще, сеанс пользователя не нужно быть вычтен времени пользователь провел на первой странице.

Возможно, есть простой javascript, который я пропустил в Google?

Спасибо, Патрик

ответ

1

Итак, я решил сделать следующее: каждый раз, когда пользователь нажимает кнопку, я вызываю detime(), а также на page_load я вызываю detime(). Возможно, это не лучшее решение, но, по крайней мере, я получил то, что хочу;)

function timer() 
{ 
    time1 = window.setTimeout('redirect();', 300000); 
} 

function redirect() 
{ 
    window.location = "XXX.aspx"; 
} 

function detime() 
{ 
    if (time1 !=null) { 
     window.clearTimeout(time1); 
     time1 = null; 
    } 
timer() 
} 
0

Ну, я предполагаю, что это зависит от вашей серверной платформы, но в моем опыте это сервер, который определяет время ожидания сеанса. Перезагрузка, которую запускает ваш код на стороне клиента, если вы каким-то образом не переопределите нормальное поведение сервера, обновите сеанс и снова запустите таймер.

Теперь, что вы может do обновляет страницу на стороне клиента и вообще не разговаривает с сервером. Для этого вы фактически загрузите код на страницу «почти время ожидания» одновременно с загрузкой исходной страницы. Затем, когда ваш тайм-аут срабатывает, вы просто показываете нужную страницу и скрываете все, что там есть.

Я бы посоветовал вам рассмотреть проблемы удобства использования с этой общей схемой.

0

Кажется, что вы хотите передать временную метку вместе с переадресацией, а затем зафиксировать временную метку и либо использовать ее, либо, если ее не определено, текущее время в момент запуска пользователя. Затем, как только это время закончится, отправляйте пользователя на явный выход из системы, который убивает их сеанс.

До тех пор, пока вы перенаправляетесь на страницу, которая явно убивает сеанс, я не думаю, что у вас возникнет проблема с истечением срока действия. Примите в случае, когда пользователь перенаправляется на новую страницу, а затем закрывает браузер, возможно, вы можете использовать скрипт onunload, чтобы снова отключить сеанс.

Смежные вопросы