Как правильно обрабатывать несколько учетных записей с одного компьютера и браузера? - PullRequest
1 голос
/ 13 июля 2010

Мне интересно, знает ли кто-нибудь, как именно Gmail, Hotmail, Facebook и т. Д. Справляются со следующим сценарием. (ПРИМЕЧАНИЕ. Предполагается, что файл cookie используется несколькими вкладками).

  1. Открывает две страницы входа в приложение.
  2. Пользователь 1 регистрируется в домене.
  3. Пользователь 1 изменяет некоторые данные, не сохраняя их.
  4. Пользователь 2 регистрирует домен в отдельной вкладке.
  5. Пользователь 1 возвращается на свою вкладку и сохраняет данные.

Я пытался повторить шаги FF для Gmail, иногда мне выдается «Это могло произойти автоматически, потому что другой пользователь вошел в систему из того же браузера» и автоматически завершает работу предыдущего пользователя », а в другое время просто отображается«страница не перенаправляет должным образом ", и мне придется очистить мой cookie.

Hotmail, кажется, немного лучше, где он сразу обнаруживает, что я вошел на первой странице и спрашивает, буду ли янравится переключать учетную запись. Если я выбрал переключение учетной записи и возвращается, чтобы попытаться сохранить данные, hotmail выдает сообщение об ошибке входа в систему.

Любой может пролить свет на то, как каждый из них реализован, а такжеЧто может быть лучшим решением для решения этой проблемы?

1 Ответ

1 голос
/ 13 июля 2010

В общем, чтобы противостоять таким проблемам, вы должны делать перекрестные ссылки на идентификационные данные из файлов cookie и других отправленных данных.Таким образом, отправленная форма будет содержать идентификатор пользователя, а файл cookie будет включать в себя сеанс пользователя.Если они несовместимы, отклоните попытку, аннулируйте сеанс и отправьте пользователя для входа в систему.

Если в ваших формах есть токены защиты CSRF (которые они должны иметь), тогда токен CSRF также может кодировать идентификатор пользователя.поэтому попытка пользователя 1 сохранить свои данные не удастся из-за недопустимого токена CSRF в форме.

...