Nano Hash - криптовалюты, майнинг, программирование

InvalidAuthenticityToken в Devise

Недавно я добавил фрагмент кода в свой ApplicationController, чтобы установить часовой пояс текущего блока на тот, который указан пользователем.

class ApplicationController < ActionController::Base
  around_action :set_time_zone, if: :current_user
  protect_from_forgery with: :exception

  private

  def set_time_zone(&block)
    Time.use_zone(current_user.time_zone, &block)
  end
end

Почему-то при попытке авторизоваться получаю

ActionController::InvalidAuthenticityToken in Devise::SessionsController#create

если я удалю

around_action :set_time_zone, if: :current_user

Я могу войти в систему, и если я добавлю его обратно после входа, все будет работать как положено.

Есть идеи?

05.05.2017

  • Я считаю, что вам нужно требовать jquery_ujs в application.js //= требовать jquery_ujs 06.05.2017
  • @Rafal jquery_ujs уже требуется! 08.05.2017
  • Хорошо, а у вас есть тег ‹%= csrf_meta_tags %› в вашем application.rb? 08.05.2017
  • @ Рафал, да! Кажется, это проблема только с контроллерами Devise. 08.05.2017
  • хорошо, тогда вам нужно изменить его на protect_from_forgery с помощью: :null_session 08.05.2017
  • См. этот ответ для справки 08.05.2017
  • @Rafal спасибо за ссылку, в основном все это изменение больше не показывает исключение, но ошибка все еще существует 08.05.2017
  • Поэтому попробуйте переместить protect_from_forgery перед around_filter, это может решить его на основе ответов на другой вопрос. 08.05.2017
  • @ Рафал, который это исправил ... большое спасибо 08.05.2017

Ответы:


1

На этой странице есть хорошая информация о проблеме, но я странным образом смог исправить это в Rails 5, поместив protect_from_forgery над around_action/filter. Надеюсь, поможет!

27.06.2017
  • Это спасло меня спустя почти 3,5 года. У меня был контекст настройки before_action для Sentry. У меня это было выше вызова protect_from_forgery... который вызывал ошибки InvalidAuthenticityToken сразу после входа в систему. 02.09.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..