#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 (с датой истечения срока действия), который был установлен в прошлом.