Я не уверен, что то же самое в MVC, но в старом asp.net у меня было приложение, которое нужно было регистрировать, когда время сеанса истекло, и я сделал это в файле Global.asax.cs в Session_End
if (Session == null || Session["logout-clicked"] != null) return;
TimeSpan ts = DateTime.Now - (DateTime)Session["session.start"];
new EventLog()
{
EventLogType = EventLogType.SessionTimedOut,
UserId = ((UserObject)Session["UserSession"]).Id,
DateStamp = DateTime.Now,
LogData = "logged in for: " + (Int32)ts.TotalHours + "hrs " + ts.Minutes + "mins",
CachedName = ((UserObject)Session["UserSession"]).Name
}.Save();
Очевидно, что вам нужно будет настроить некоторые из этих переменных сеанса в вашем методе входа в систему (если вы хотите получить такую информацию, как общее время входа в систему / время сеанса), и у вас, вероятно, будут свои собственные методы.чтобы сохранить любые данные, которые вам нужно сохранить ... но, надеюсь, это может вдохновить вас на несколько идей?
У меня есть переменная сеанса "нажатой при выходе из системы" (устанавливается при щелчке по выходу из системы), потому что, когда пользовательпри щелчке по выходу из системы у него будет другой журнал, и Session_End вызывается после того, как вы вызовете Session.Abandon (), поэтому мне нужно было убедиться, что он не регистрировал выход из системы с последующим таймаутом сеанса.