【问题标题】:Ajax Calls Losing Session - Ruby on Rails/Radiant CMS SiteAjax 调用丢失会话 - Ruby on Rails/Radiant CMS 站点
【发布时间】:2012-10-12 02:20:25
【问题描述】:

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

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

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

【问题讨论】:

标签: ruby-on-rails ajax rack


【解决方案1】:

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

app/views/layouts/application.html.erb

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

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

宝石文件

gem "jquery-ujs"

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

app/assets/application.js

//= require jquery-ujs

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

【讨论】:

    猜你喜欢
    • 2014-04-18
    • 1970-01-01
    • 2011-08-17
    • 2011-03-25
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多