我最近在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
我可以登录,如果我在登录后添加回来,一切都按预期工作。
有什么想法吗?
答案 0 :(得分:3)
This page有关于此问题的良好信息,但我很奇怪能够通过将protect_from_forgery
置于 around_action/filter
之上来修复Rails 5中的问题。希望它有所帮助!