You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生产环境Rails 6应用请求被拒绝:InvalidAuthenticityToken问题排查

Rails 6多服务器环境下CSRF验证失败排查方案

问题场景

生产环境部署Rails 6应用,采用负载均衡器搭配两台应用服务器(d1、d2)。已统一两台服务器的secret_key_base,但master.key仍不相同,目前d1持续出现请求被拒绝的情况,报错为CSRF令牌验证失败,d2运行正常。

错误日志

Started POST "/users/sign_in" for 127.0.0.1 at 2024-01-29 11:29:58 +0500
I, [2024-01-29T11:29:58.069581 #46746]  INFO -- : [b21faa00-fb11-479a-b646-9920137ea709] Processing by Devise::SessionsController#create as HTML
I, [2024-01-29T11:29:58.069638 #46746]  INFO -- : [b21faa00-fb11-479a-b646-9920137ea709]   Parameters: {"authenticity_token"=>"V38ZddJOJOTEGOs8AuscUnhFHb8/02DW1hD0cQY2t3yuJQwVc5GOrN557F3pAEUiz04bMpUmLE/yEfPY9gZKNw==", "user"=>{"email"=>"ansm6927@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
W, [2024-01-29T11:29:58.070552 #46746]  WARN -- : [b21faa00-fb11-479a-b646-9920137ea709] Can't verify CSRF token authenticity.
I, [2024-01-29T11:29:58.070741 #46746]  INFO -- : [b21faa00-fb11-479a-b646-9920137ea709] Completed 422 Unprocessable Entity in 1ms (Allocations: 954)
F, [2024-01-29T11:29:58.071201 #46746] FATAL -- : [b21faa00-fb11-479a-b646-9920137ea709]   
[b21faa00-fb11-479a-b646-9920137ea709] ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):

排查与解决步骤

  • 统一master.key与凭证文件:master.key负责解密config/credentials.yml.enc,如果d1的master.key无法正确解密该文件,会导致实际运行的加密密钥异常。将d2的master.key和credentials.yml.enc同步到d1,确保两台服务器凭证配置完全一致。
  • 重启d1应用进程:修改密钥配置后,必须重启d1上的Rails服务(如Puma、Unicorn),确保新配置加载生效。
  • 启用负载均衡会话粘性:若负载均衡器未配置会话粘性,用户请求可能在d1、d2间跳转,导致跨服务器的CSRF令牌验证失败。开启基于Cookie的会话持久化,让同一用户的请求始终路由到同一服务器。
  • 验证d1密钥配置:在d1的控制器中临时添加调试代码,确认密钥和令牌生成正常:
    puts "CSRF Token: #{form_authenticity_token}"
    puts "Secret Key Base: #{Rails.application.secret_key_base}"
    
  • 检查d1环境变量:确认d1的环境变量中没有覆盖secret_key_base或RAILS_MASTER_KEY,避免配置冲突。
  • 清理缓存:执行rails cache:clear清理d1的Rails缓存,同时指导用户清理浏览器缓存,避免旧令牌残留。

内容的提问来源于stack exchange,提问作者Muhammad Ans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:35:59