Rails:会话变量在外面是零

时间:2016-03-17 13:22:37

标签: ruby-on-rails ruby ruby-on-rails-4

我在rails控制器中创建了一个方法,它使用会话变量返回json:

def get_facebook_code
    render json: { code: session[:facebook_auth_code] }
end

当我在浏览器http://localhost:3000/credentials/facebook/code中粘贴链接时,它可以正常工作 - 会话变量返回

当我从Postman运行请求或从第三方应用程序的js代码运行时,会话变量为null:

$.ajax({
  type: "GET",
  url: "http://localhost:3000/credentials/facebook/code",
  success: function(msg) {
    console.log(msg);
  },
});

我在credentials/* gem

的帮助下允许rack-cors路径请求
resource '/credentials/*', headers: :any, methods: [:get]

1 个答案:

答案 0 :(得分:2)

因为默认情况下rails会在cookie中存储会话。

不知何故,您在浏览器会话中添加了密钥“facebook_auth_code”。邮递员/第三方应用程序请求不能使用相同的密钥,因为cookie不同。