ruby 3.0.1
rails 6.1.2
'devise','〜> 4.7','>= 4.7.3'
我遇到了一个非常不寻常的情况。我正在将一个rails安装从一个服务器迁移到另一个服务器。我相信我已经完成了95%的工作,只是恢复了生产数据库。
但是,包括用户注册和登录在内的任何涉及表单提交的操作都会给我带来错误页面:
The change you wanted was rejected.
Maybe you tried to change something you didn't have access to.
服务器日志提供了更有帮助的信息:
Completed 422 Unprocessable Entity in 2ms (Allocations: 433)
FATAL -- ActionController::InvalidAuthenticityToken
这让我感到困惑。因为我已经重新生成了master.key和credentials.yml.enc,并通过RAILS_MASTER_KEY环境变量公开了master.key的内容。这意味着表单包含适当的,以防止跨站点脚本攻击。
我认为这与会话无关,因为这甚至影响到用户注册。我正在使用Devise进行身份验证。
但是...现在我遇到了难题。从这里没有出路了。有人知道问题出在哪里吗?
更新1
添加skip_before_action :verify_authenticity_token确实允许我跳过这个问题。但我不满意这个解决方案。
更新2
我有这些元标记。
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
devise
吗? - Lam Phan