Я пытаюсь добиться следующего сценария в своем веб-приложении:
- Когда пользователь вошел в систему без опции «Запомнить меня», я сделаю куки непостоянными, чтобы при закрытиибраузер они будут отключены.Я также установлю время истечения на 10 минут.
- Когда пользователь войдет в систему с опцией «Запомнить меня», я сохраню cookie-файл постоянным, чтобы при закрытии браузера он не терялся.Я установлю срок действия на 1 месяц.
Ниже приведен код, который я сейчас пишу:
HttpCookie cookie = FormsAuthentication.GetAuthCookie(loginView.UserName, loginView.RememberMe);
DateTime ExpirationTime = loginView.RememberMe == true ? DateTime.Now.AddMonths(1) : DateTime.Now.AddMinutes(10);
cookie.Name = "Cookie1";
string userData = JsonConvert.SerializeObject(userModel);
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket
(
1, loginView.Username, DateTime.Now, ExpirationTime, loginView.RememberMe, userData, FormsAuthentication.FormsCookiePath
);
string enTicket = FormsAuthentication.Encrypt(authTicket);
cookie.Value = enTicket;
Response.Cookies.Add(cookie);
После входа в систему - в Global.asax -Я беру все пользовательские данные loginView из cookie и сохраняю их в классе CustomPrincipal.
Механика «Запомнить меня» работает как задумано.Но проблема в том, что срок действия билета, похоже, не истек, и я никогда не выхожу из системы (я ждал, пытаясь выяснить, выйду ли я из системы, будучи афком).Когда я вручную устанавливаю дату истечения срока действия файлов cookie, тайм-ауты работают отлично, но тогда я теряю механизм «Запомнить меня» ... Согласно https://support.microsoft.com/en-us/help/910443/understanding-the-forms-authentication-ticket-and-cookie
В случае непостоянных файлов cookie, если билетсрок действия файла cookie истек, и пользователь будет перенаправлен на страницу входа.
Мне кажется, что я что-то упустил ...