【问题标题】:Redmine: 422 invalid form authenticity tokenRedmine:422 无效的形式真实性令牌
【发布时间】:2015-02-25 12:58:31
【问题描述】:
我正在使用this 插件在我的 IDP 和 redmine 之间启用 SSO。目的是避免在登录redmine时重新输入用户名和密码。 Redmine 和 IDP 都连接到外部 LDAP。问题是从我的 IDP 重定向回 redmine 后(输入用户名和密码后),它给出了这个错误。
Redmine 版本:2.5.2,
红宝石版本:1.9.3,
Rails 版本:3.2.19
【问题讨论】:
标签:
ruby
authentication
single-sign-on
redmine
redmine-plugins
【解决方案1】:
Redmine 3.4.2的一些细节
如果您收到错误 422(无法验证 CSRF 令牌真实性),
你必须去控制器文件
/app/controller/aplication_controller.rb
并使用代码删除或注释字符串
render_error :status => 422, :message => "invalid form authenticity token."
然后添加代码
redirect_back_or_default(home_path)
所以,你的代码会是这样的
# render_error :status => 422, :message => "invalid form authenticity token."
redirect_back_or_default(home_path)
【解决方案2】:
对我们来说,当已经登录的用户尝试重新登录(例如,使用多个浏览器选项卡)时会出现此错误。
解决办法是here,补丁application_controller.rb:
- render_error "Invalid form authenticity token."
+ redirect_back_or_default home_path
【解决方案3】:
我们在使用反向代理 SSO 时发生了这种情况。 SSO 中配置的名称与 Redmine 中的用户名大小写不同。
从 nginx 配置中提取:
# Pass the user to that stupid Passenger Phusion
# that cannot evaluate variables like $http_x_forwarded_user
passenger_env_var REMOTE_USER nicolasm;
我们在 Redmine 中的用户名是 NicolasM。
按照其他答案的建议删除安全性并不是一个持久的解决方案。