Devise中的InvalidAuthenticityToken

时间:2017-05-05 21:37:04

标签: ruby-on-rails 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

我可以登录,如果我在登录后添加回来,一切都按预期工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

This page有关于此问题的良好信息,但我很奇怪能够通过将protect_from_forgery 置于 around_action/filter之上来修复Rails 5中的问题。希望它有所帮助!