Сеанс перекрывается, 2 пользователя вошли как-то, система видит их как одного - PullRequest
0 голосов
/ 27 июля 2010

Редко наша система смешивает зарегистрированных пользователей, и я не могу понять, почему.

Вот сценарий: 2 пользователя входят в систему (A и B), обычно каждый из них имеет свой собственный идентификатор, в какой-то момент один из пользователей (A) берет идентификатор другого пользователя (B) и вносит свой вклад в веб-сайт, как если бы он был B.

Технически, это то, что происходит:

1- 2 пользователя входят в систему: каждый пользователь запрашивает действие «войти» с сервера единого входа (SSO), который работает на PHP, и для каждого пользователя создается сеанс (сеансы хранятся в Memcached-X)

2- У пользователей разные идентификаторы: у каждого пользователя будет другой сеанс на веб-сервере, который работает на Ruby (RoR), а также сохраняет сеансы на Memcached-Y. Для каждой страницы, которую они вводят в RoR, есть проверка iFrame, которая запрашивает аутентификацию от браузера пользователя к SSO.

3- В какой-то момент пользователь A становится B, а B остается как B: файлы журнала SSO показывают, что пользователь A по-прежнему является пользователем A, а пользователь B по-прежнему является пользователем B, в то время как журналы RoR показывают, что пользователь A становится B учитывая, что он все еще имеет тот же идентификатор сеанса. В этот конкретный момент мы проверили ключи, выходящие из memcached RoR, и они вернули правильные значения.

Что происходит? Предоставляет ли SSO неправильные значения для RoR, или RoR все смешивает, или серверы Memcached делают ошибки?

Пожалуйста, помогите, у меня заканчиваются идеи ... Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 июля 2010

Оказалось, что memcached, который содержит сеанс для RoR, содержал одну и ту же информацию о сеансе для 2 разных ключей сеанса, либо Ruby смешивает ее, либо Memcached, я сильно сомневаюсь в последующем.

0 голосов
/ 27 июля 2010

Есть ли какая-то проверка времени при запросе, какой сеанс использовать?Если пользователь A всегда превращается в пользователя B (я предполагаю, что пользователь A входит в него ПЕРВЫМ), то, возможно, где-то по пути пользователь A ищет информацию о сеансе и сортирует по времени.

Звучит так, как будто он находится всвязь между ROR и SSO, если оба журнала подтверждают правильность идентификаторов пользователя / идентификаторов сеансов, то когда эта проверка происходит, она должна находиться где-то посередине?

...