Переключение хранилища сеансов Rails из cookie в кеш: InvalidAuthenticityToken - PullRequest
0 голосов
/ 11 октября 2018

Я унаследовал управление сайтом rails, который использует хранилище сеансов на основе файлов cookie.Я получаю ошибки, потому что файлы cookie слишком велики («Длина файла cookie должна быть меньше или равна 4096 символам»), и поэтому я пытаюсь переключиться на хранилище сеансов на основе кэша.(В сторону: это в первую очередь связано с токеном доступа для Microsoft Graph, который составляет 1798 символов. Результирующий файл cookie содержит 3000 символов. Не кажется ли это правильным? Даже если бы файл cookie был всего 1798 символов, думаю, я бы хотелсохранить это на сервере, верно?)

Все, что я читал, предполагает, что этот переключатель должен быть легким: измените настройки хранилища сеансов с :cookie_store на :cache_store.Вот новый session_store.rb:

Rails.application.config.session_store :cookie_store, key: '_site_session'
Rails.application.config.session_store :cookie_store, key: '_access_token'
Rails.application.config.session_store :cookie_store, key: '_workbook_id'

После этого я теперь вижу, что размер файла cookie _workbook_id в моем браузере уменьшился до 44, так что это выглядит хорошо.Однако теперь я не могу войти на сайт.Когда я это делаю, я получаю ошибку: ActionController::InvalidAuthenticityToken at /login.Я немного проследил процесс аутентификации и убедился, что проблема (я думаю) в том, что Rails запускает valid_authenticity_token в request_forgery_protection.rb с несоответствующими токенами.Я не уверен, почему, хотя, или куда идти дальше, хотя.Я признаю, что я новичок в Rails, работающий с вещами, которые я еще не понимаю.

Примечание: я также вижу кучу исключений, когда я делаю запрос на вход в систему:

Exception raised: [LoadError]: cannot load such file -- devise/sessions_helper.rb
Exception raised: [LoadError]: cannot load such file -- devise/sessions_helper.rb
Exception raised: [LoadError]: No such file to load -- devise/sessions_helper.rb
Exception raised: [AbstractController::Helpers::MissingHelperError]: Missing helper file helpers/devise/sessions_helper.rb
Exception raised: [LoadError]: cannot load such file -- users/sessions_helper.rb
Exception raised: [LoadError]: cannot load such file -- users/sessions_helper.rb
Exception raised: [LoadError]: No such file to load -- users/sessions_helper.rb
Exception raised: [AbstractController::Helpers::MissingHelperError]: Missing helper file helpers/users/sessions_helper.rb
Exception raised: [NameError]: uninitialized constant Session
Exception raised: [ArgumentError]: no receiver is available
Exception raised: [ArgumentError]: no receiver is available
Exception raised: [NameError]: uninitialized constant Users::Session
Exception raised: [NameError]: uninitialized constant Session
Exception raised: [NameError]: uninitialized constant Session
Exception raised: [ArgumentError]: no receiver is available
Exception raised: [ArgumentError]: no receiver is available
Exception raised: [NameError]: uninitialized constant Users::Session
Exception raised: [NameError]: uninitialized constant Session

Они обнаруживаются как в хранилищах cookie, так и в хранилищах кеша, поэтому я не думаю в этом проблема.

1 Ответ

0 голосов
/ 11 октября 2018

Возможно, это истекает.Попробуйте обновить session_store.rb файл

# config/init../session_store.rb
Rails.application.config.session_store :cookie_store,
    :key => '_localhost_session', 
    :compress => true,
    :pool_size => 10,
    :expire_after => 1.year
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...