我正在对Radiant CMS / Ruby on Rails应用程序进行一些相当广泛的更改 - 升级到Radiant 1. *以及大量的gem更改 - 在此过程中,我们开始遇到维护用户的问题会话。普通调用工作正常,但进入的任何AJAX调用都没有为用户找到活动会话并创建一个新会话。
我们正在使用一个cookie商店,所以可能会出现一些问题,但我不确定在哪里或哪里看。检查Request标头,看起来会话cookie在AJAX调用的cookie头中传递。对于两种类型的请求,cookie头中传递的内容看起来相同。然而,当在控制器中获取会话变量时,将为ajax调用创建新会话,而不是为标准http调用创建。
知道可能会发生什么,或者我应该在哪里调试正在发生的事情?
答案 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
的更多信息