AngularJS上的Rails 3.2.15应用程序我正在努力不断失去会话。我已将问题缩小到CSRF令牌真实性失败。我不知道为什么,但我最终设置了两个XSRF-TOKEN cookie;一个用于根域,一个用于www。域名(site.com和www.site.com)。
由于此原因,正在发送错误的XSRF-TOKEN标头值。
最初,我在application_controller.rb中有自定义代码,用于处理值的设置和验证。我最终在这里结了两个饼干。
我撕掉了那段代码,并使用了gem' angular_rails_csrf'虽然它的名字,但实际上没有任何特定的角度保存用于将cookie的名称设置为XSRF-TOKEN。不过,我最终得到了2个不同的饼干和2个不同的值。
设置cookie的代码是:
def set_xsrf_token_cookie
cookies['XSRF-TOKEN'] = form_authenticity_token if protect_against_forgery?
end
我已注释掉该行,并在执行此操作时已验证未设置XSRF-TOKEN Cookie。我假设有一些我不知道的明显事物。
最后,我在application_controller.rb中添加了一个after_filter并检查了那里的cookies对象 - 我从未在那里看到过第二个XSRF-TOKEN,看起来我在浏览器端看到了这个,而不是服务器。
注意:如果使用FQDN(local.mysite.com:3000),则会在本地发生
提前感谢您的帮助。