ASP.NET Формирует файлы cookie аутентификации — изменение пользователей

#asp.net #forms-authentication

#asp.net #формы-аутентификация

Вопрос:

Я создаю файлы cookie аутентификации форм, используя следующий код:

 string formsCookieStr = string.Empty;
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
            1,                              // version
            username,                       // user name
            DateTime.Now,                   // issue time
            DateTime.Now.AddMinutes(30),    // expires
            false,                          // Persistence
            userRoleData                    // user data
    );
formsCookieStr = FormsAuthentication.Encrypt(ticket);
HttpCookie FormsCookie = new HttpCookie(FormsAuthentication.FormsCookieName, formsCookieStr);
HttpContext.Response.Cookies.Add(FormsCookie);
  

Если второй пользователь попытается войти с того же клиентского компьютера до того, как первый пользователь выйдет из системы, приведет ли приведенный выше код к появлению двух файлов cookie, существующих на клиенте? Если да, то как мне предотвратить такое положение дел? Спасибо

Ответ №1:

FormsAuthentication.FormsCookieName задает имя файла cookie, поэтому существует только один файл cookie аутентификации, если вы назовете его с FormsAuthentication.FormsCookieName

Комментарии:

1. Правильно, делаю файлы cookie. Add(name) создаст или перезапишет любой файл cookie с этим именем (и тем же доменом).

Ответ №2:

Обычно рекомендуется удалять файлы cookie-ответов при загрузке страницы входа в систему или при создании нового файла cookie: Response.Cookies.Clear(); , поэтому билет существующего пользователя очищается перед добавлением нового билета.

Сказав это, в вашем ответе будет 2 файла cookie (для 2 пользователей), поскольку вы вручную создаете файл cookie и добавляете его в ответ.

Комментарии:

1. но не будет FormsAuthentication. FormsCookieName должно быть уникальным, и поэтому второй файл cookie будет перезаписывать первый на клиенте?

2. -1 Нет, будет только один файл cookie. Также я примерно на 95% уверен в ответе. Файлы cookie. Clear () ничего не сделает, кроме удаления всех файлов cookie, которые вы добавили в коллекцию файлов cookie во время этого текущего запроса. Если вы хотите удалить файлы cookie от пользователя, вы должны ДОБАВИТЬ в ответ файл cookie с тем же именем, что и файл cookie, который вы хотите удалить, и отправить его как постоянный файл cookie (с датой истечения срока действия), который был установлен в прошлом.