FormsAuthenticationTicket против HttpCookie срок действия - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь добиться следующего сценария в своем веб-приложении:

  1. Когда пользователь вошел в систему без опции «Запомнить меня», я сделаю куки непостоянными, чтобы при закрытиибраузер они будут отключены.Я также установлю время истечения на 10 минут.
  2. Когда пользователь войдет в систему с опцией «Запомнить меня», я сохраню 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 истек, и пользователь будет перенаправлен на страницу входа.

Мне кажется, что я что-то упустил ...

...