Я создал библиотеку сессий, и у меня возникла очень случайная ошибка (я не знаю, как выполнить это модульное тестирование, поэтому я просто заполнил все сообщения журнала и дождался, пока это не произойдет снова), что приводит к пользователь вышел из системы из-за несоответствия идентификатора сеанса.
Поток приложения выглядит так:
- Сделан запрос с действительным идентификатором сеанса
- Данные о сеансе найдены для этого идентификатора сеанса в БД
- «Последнее действие» оказывается старым, поэтому оно обновляется и обновляется в БД
- Новый идентификатор сеанса отправляется в ответе (в виде файла cookie)
Это работает нормально почти всегда, но иногда следующий запрос не соответствует идентификатору сеанса, потому что (это мое предположение) он был отправлен после того, как мы обновили базу данных (в предыдущем запросе, который все еще выполнялся), но до пришел ответ с новым файлом cookie.
Я неправильно понял концепцию восстановления идентификатора сеанса? Я воссоздаю идентификаторы сеанса только по соображениям безопасности, поэтому кто-то, кто решил войти в систему в течение года, по-прежнему время от времени меняет свой идентификатор сеанса.