Поможет ли ActiveRecordStore мой логин, потерянный из-за разрушенных проблем с cookie? - PullRequest
0 голосов
/ 06 ноября 2010

Вот сценарий: наш сайт использует хранилище cookie Rails по умолчанию для сохранения информации о сеансе. Это хорошо соответствует нашим потребностям, за исключением того факта, что некоторые клиенты, которые «заходят» на наш сайт, теряют свою аутентификацию, потому что они либо:

  1. (излишне) приватный просмотр на уровне, который отклоняет куки
  2. Просматривает с некоторыми другими настройками, которые отклоняют / топтает куки

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

У меня вопрос двоякий:

  1. Решит ли использование ActiveRecordStore мою проблему, поскольку нужный мне идентификатор будет храниться в БД? Как ActiveRecordStore сохраняет идентификаторы сеанса между запросами?

  2. Кроме сессий, существует ли какой-либо надежный способ передачи индикации аутентификации между запросами?

Что касается # 1, если ActiveRecordStore нужен файл cookie для хранения идентификатора сеанса, то переход к нему не имеет особого смысла, поскольку проблема все еще существует.

Что касается # 2, единственное, о чем я могу думать, - это передать необходимый идентификатор в параметрах запроса и использовать временные метки, чтобы требовать, чтобы запросы пользователя выполнялись в течение определенного периода времени (что имеет смысл в этой части нашей системы). Недостаток: всегда будет окно, открытое для злонамеренной деятельности, хотя и гораздо меньшее, чем если бы такого ограничения не было.

В настоящее время мы решаем проблему не программно: просто предупреждаем пользователя о происходящем, направляя его на страницу справки, которая объясняет, как решить проблему. Если они не могут, свяжитесь с нами для помощи. Это может быть правильным решением, и если эта проблема затронет только 10% наших пользователей (что пока так происходит - это первый раз, когда это произошло), то, возможно, не стоит менять код.

Советы приветствуются!

1 Ответ

1 голос
/ 06 ноября 2010

за http://rails.nuvvo.com/lesson/6372-action-controller-session

В вашем приложении есть сеанс для каждого пользователя, в котором вы можете хранить небольшие объемы данных, которые будут сохраняться между запросами. Сеанс доступен только в контроллере и может использовать один из нескольких различных механизмов хранения:

  • CookieStore - хранит все на клиенте.
  • DRBStore - сохраняет данные на клиенте DRb.
  • MemCacheStore - сохраняет данные в MemCache.
  • ActiveRecordStore - сохраняет данные в базе данных с использованием Active Record.

Все хранилища сеансов хранят идентификатор сеанса в файле cookie - другого способа передачи его на сервер нет. Большинство магазинов также используют этот ключ для поиска данных сеанса на сервере.

Полагаю, вы могли бы внедрить зашифрованный идентификатор сеанса в HTML-код страницы и затем использовать javascript для передачи этой информации с каждой внутренней ссылкой или формой, которую отправляет пользователь, таким образом воссоздавая функцию cookie. Но если ваши пользователи намеренно отключили куки, им, вероятно, не понравится, что вы делаете это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...