2010-06-01 2 views

ответ

0

Используйте функцию Session_End() в файле global.asax. Пожалуйста, смотрите здесь для получения дополнительной информации

SO - Session End

EDIT: Нет, это, вероятно, не будет делать это. См. Комментарии ниже.

Если вы должны переадресовать на истечение срока действия сеанса, может быть что-то подобное сделать для вас?

private void Page_Load(object sender, System.EventArgs e) 
{ 

Response.AddHeader(“Refresh”,Convert.ToString((Session.Timeout * 60) + 5)); 
if(Session[“IsUserValid”].ToString()==””) 
Server.Transfer(“Relogin.aspx”); 

} 

EDIT 2: Протест, это может получить сложно, если у вас есть AJAX вещь происходит.

Я видел примеры, где люди будут помещать это в page_load базовой страницы и все ваши страницы .aspx с этой базовой страницы. Это не позволит вам добавить этот код для каждой отдельной страницы, которая у вас есть.

Почему первый метод не работает (Session_End)? Эта функция называется внутренне на сервере, когда заканчивается сеанс. Таким образом, нет никакого связанного запроса/ответа на перенаправление или передачу. I.e., эта функция может быть вызвана сервером через 20 минут после закрытия browswer.

+1

Session_End для очистки переменных сеанса не Перенаправление пользователя на другую страницу. – Amitabh

+0

@Amitabh I thnk он имеет в виду функцию в global.aspx – Steven

+1

Нет, он прав, мой плохой. Обновлено сообщение с другим решением. – Tommy

1

Предположим, вам нужно выполнить проверку сеанса на группе страниц вашего сайта, поэтому хороший способ сделать это - объявить базовый класс для всех ваших страниц с ограниченным доступом. Что-то вроде:

public class BasePage : System.Web.UI.Page 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 

     if (Session["Context"] == null) 
     { 
      // do redirect 
     } 
    } 
} 

предположив, что при входе в систему, вы будете назначить объект, представляющий сеанс сессии [ «Контекст»]

Ваши страницы будут наследовать этот класс, как:

public partial class _Default : BasePage { ... } 
0

Вы можете проверить свойство HttpContext.Current.User.Identity.IsAuthenticated, которое позволит вам узнать, есть ли пользователь, прошедший проверку подлинности, или нет.

так на ур загрузки страницы

if (!HttpContext.Current.User.Identity.IsAuthenticated) 
      { 
       //FormsAuthentication.RedirectToLoginPage(); 
       Response.Redirect("~/Login.aspx"); 
      } 
Смежные вопросы