Ajax调用丢失会话 - Ruby on Rails / Radiant CMS站点

时间:2012-10-11 14:07:53

标签: ruby-on-rails ajax rack

我正在对Radiant CMS / Ruby on Rails应用程序进行一些相当广泛的更改 - 升级到Radiant 1. *以及大量的gem更改 - 在此过程中,我们开始遇到维护用户的问题会话。普通调用工作正常,但进入的任何AJAX调用都没有为用户找到活动会话并创建一个新会话。

我们正在使用一个cookie商店,所以可能会出现一些问题,但我不确定在哪里或哪里看。检查Request标头,看起来会话cookie在AJAX调用的cookie头中传递。对于两种类型的请求,cookie头中传递的内容看起来相同。然而,当在控制器中获取会话变量时,将为ajax调用创建新会话,而不是为标准http调用创建。

知道可能会发生什么,或者我应该在哪里调试正在发生的事情?

1 个答案:

答案 0 :(得分:3)

问题可能是安全令牌没有在Ajax调用中传递,这导致您的授权gem注销用户。这是一种透明地在所有Ajax调用中传递安全性令牌的方法:

应用/视图/布局/ application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <%= csrf_meta_tags %>
    (...)

然后将jquery-ujs gem添加到您的Gemfile:

<强>的Gemfile

gem "jquery-ujs"

这行到jquery行下面的应用程序javascript文件:

应用/资产/ application.js中

//= require jquery-ujs

以下是有关jquery-ujs gem

的更多信息