3

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

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

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

4

1 回答 1

3

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

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

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

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

宝石文件

gem "jquery-ujs"

并将此行添加到 jquery 行下方的应用程序 javascript 文件中:

应用程序/资产/application.js

//= require jquery-ujs

这是有关jquery-ujs gem的更多信息

于 2012-10-11T18:20:25.980 回答