Пользователь Членства Доступа В Конце Сеанса
В настоящее время я пытаюсь написать немного кода, чтобы сделать некоторую уборку, когда пользователь покидает свою сессию (либо через тайм-аут, либо выход из системы), однако хотел бы получить доступ к объекту пользователя, чтобы я знал, кому принадлежит сессия.
К сожалению HttpContext имеет значение null, поэтому я не могу получить доступ к HttpContext.Пользователь или HttpContext.Пользователь.IsInRole или даже печенье auth напрямую. Я понимаю причины этого, но интересно, есть ли какой-либо другой способ получить доступ к этой информации когда истекает время сеанса?
Это помимо очевидного ответа на дублирование некоторой информации в сеансе.
Спасибо.
2 ответа:
Вы можете использовать Global.событие asax s Session_End. Событие Session_End вызывается автоматически по истечении срока действия сеанса.
Проблема в том, что событие Session_End вызывается без текущего запроса. В результате, HttpContext.Current является нулем внутри Session_End.
Если вы хотите получить информацию о пользователе, вам нужно будет сохранить ее в сеансе, как только пользователь успешно войдет в систему.
private void Session_End(object sender, EventArgs e) { // Code that runs when a session ends. // Note: The Session_End event is raised only when the sessionstate mode // is set to InProc in the Web.config file. If session mode is set // to StateServer or SQLServer, the event is not raised. var userName = Session["UserName"]; var sessionId = Session.SessionID; }
Нет ничего, что связывает пользователя членства с сеансом.
Когда пользователь вручную выходит из системы, перед тем как очистить сеанс, вы можете получить его информацию о пользователе.
Однако, если пользователь оставляет браузер открытым и время сеанса истекает на сервере, вы не будете знать, кто этот пользователь, поэтому не сможете привести его в порядок.
На сервере, возможно, потребуется отслеживать, когда пользователь в последний раз взаимодействовал, а затем запустить задание для очистки для пользователей, которые еще не взаимодействуют через некоторое время и считаются вышедшими из системы.