Вот сценарий: наш сайт использует хранилище cookie Rails по умолчанию для сохранения информации о сеансе. Это хорошо соответствует нашим потребностям, за исключением того факта, что некоторые клиенты, которые «заходят» на наш сайт, теряют свою аутентификацию, потому что они либо:
- (излишне) приватный просмотр на уровне, который отклоняет куки
- Просматривает с некоторыми другими настройками, которые отклоняют / топтает куки
В этом случае наш сайт не может найти идентификатор, который ему необходим для работы, предполагает, что пользователь не справляется, и эффективно выводит их из системы.
У меня вопрос двоякий:
Решит ли использование ActiveRecordStore мою проблему, поскольку нужный мне идентификатор будет храниться в БД? Как ActiveRecordStore сохраняет идентификаторы сеанса между запросами?
Кроме сессий, существует ли какой-либо надежный способ передачи индикации аутентификации между запросами?
Что касается # 1, если ActiveRecordStore нужен файл cookie для хранения идентификатора сеанса, то переход к нему не имеет особого смысла, поскольку проблема все еще существует.
Что касается # 2, единственное, о чем я могу думать, - это передать необходимый идентификатор в параметрах запроса и использовать временные метки, чтобы требовать, чтобы запросы пользователя выполнялись в течение определенного периода времени (что имеет смысл в этой части нашей системы). Недостаток: всегда будет окно, открытое для злонамеренной деятельности, хотя и гораздо меньшее, чем если бы такого ограничения не было.
В настоящее время мы решаем проблему не программно: просто предупреждаем пользователя о происходящем, направляя его на страницу справки, которая объясняет, как решить проблему. Если они не могут, свяжитесь с нами для помощи. Это может быть правильным решением, и если эта проблема затронет только 10% наших пользователей (что пока так происходит - это первый раз, когда это произошло), то, возможно, не стоит менять код.
Советы приветствуются!