Я искал в Интернете и нашел много странных ответов, и я перепробовал почти все из них. Моя проблема заключается в следующем. Моя страница входа содержит:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(min), persistCookie, userid.ToString());
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
cookie.Expires = ticket.Expiration;
Response.Cookies.Add(cookie);
FormsAuthentication.RedirectFromLoginPage(userName, persistCookie);
Теперь минимальное значение зависит от пользователя и может быть установлено индивидуально, так же как и persistCookie.
После того, как я понимаю, этот код должен привести к возможности переопределения значений по умолчанию в web.config. Что должно быть 30 минут.
<authentication mode="Forms">
<forms loginUrl="~/Default/default.aspx" defaultUrl="~/User/UserMain.aspx"/>
</authentication>
min в настоящее время установлено на 120, а для persistCookie установлено значение true. Когда я вхожу в систему, я получаю тайм-аут на 30 минут. (Не сеанс, поэтому где-то установлена дата истечения срока действия, потому что, если он не был установлен, файл cookie должен быть основан на сеансе, также я не получаю 120 минут, что является здесь своего рода сделкой)
Мой вопрос для упрощения: как мне получить значение «min» для даты истечения срока действия файла cookie?
Это может оказаться слишком простой вещью, но в настоящее время я полностью застрял, поэтому буду признателен за любую помощь.
РЕДАКТИРОВАТЬ: Я изменил логику входа в систему на эту:
FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(min), persistCookie, userid.ToString());
string encTicket = FormsAuthentication.Encrypt(fat);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) { Expires = fat.Expiration });
Response.Redirect(FormsAuthentication.GetRedirectUrl(userName, false));
И теперь это работает. Но я не могу понять, почему это сработает, а не предыдущее. Создание билета такое же, единственное отличие состоит в том, что я добавляю свойство Expires HttpCookie при создании HttpCookie, а не после создания объекта.
Если у кого-нибудь есть хорошее объяснение, я весь слушаю! :)