我在会话中使用 Rails 3.2.3 和 active_record_store。
我的理解是 Rails 中的 CSRF 令牌存储在会话中,除非调用 reset_session 或由于某种原因会话被破坏,否则不应重置。
但是在某些地方,当远程表单通过 ajax 加载时,它包含的真实性令牌与该页面上 META 标记中指定的真实性令牌不同。因此,在提交该表单时会导致无效令牌错误和 reset_session。
def form_authenticity_token
session[:_csrf_token] ||= SecureRandom.base64(32)
end
我无法弄清楚为什么会话 [:_csrf_token] 被破坏并创建新令牌的有效会话?