从javascript bookmarklet调用designe

从javascript bookmarklet调用designe,javascript,ruby-on-rails,devise,ruby-on-rails-3.1,bookmarklet,Javascript,Ruby On Rails,Devise,Ruby On Rails 3.1,Bookmarklet,我有一个javascript bookmarklet,它曾经作为单用户模式工作。它的工作原理是我在浏览器上点击bookmarklet,然后在我的服务器上注入一个远程javascript。第二个javascript依次对我的rails服务器进行ajax调用,代码如下: $.post( "http://192.168.1.2:3000/stuffs", {stuff: JSON.stringify({"link":address})}, "json" ); $.post(

我有一个javascript bookmarklet,它曾经作为单用户模式工作。它的工作原理是我在浏览器上点击bookmarklet,然后在我的服务器上注入一个远程javascript。第二个javascript依次对我的rails服务器进行ajax调用,代码如下:

$.post(
    "http://192.168.1.2:3000/stuffs",
    {stuff: JSON.stringify({"link":address})},
    "json"
);
$.post(
    "http://192.168.1.2:3000/stuffs",
    {
         stuff: JSON.stringify({"link":address}), 
         authenticity_token: <%= "#{form_authenticity_token.inspect}" if protect_against_forgery? %>
    },
    "json"
);
当我在没有帐户的情况下处理我的项目时,这段代码曾经起作用。但今天我添加了一个Desive身份验证系统。所以现在系统有了用户。在我的控制器代码中

before_filter :authenticate_user!

def create
    puts current_user
    @stuff.user = current_user
    ...
end
这不管用。当前用户不返回任何内容。我只是想弄清楚是否存在现有会话(是否有人登录),然后想在该用户下创建一个条目。在这种情况下,一个用户有很多东西,而这些东西属于一个用户。现场的其余部分工作正常。似乎尝试使用bookmarklet访问并没有保留会话


有人知道发生了什么吗

我认为您需要将Authentity token参数传递给jQuery发送的参数,如下所示:

$.post(
    "http://192.168.1.2:3000/stuffs",
    {stuff: JSON.stringify({"link":address})},
    "json"
);
$.post(
    "http://192.168.1.2:3000/stuffs",
    {
         stuff: JSON.stringify({"link":address}), 
         authenticity_token: <%= "#{form_authenticity_token.inspect}" if protect_against_forgery? %>
    },
    "json"
);
$.post(
"http://192.168.1.2:3000/stuffs",
{
stuff:JSON.stringify({“link”:address}),
真实性令牌:
},
“json”
);

更多关于
表单\u真实性\u令牌的文档可以在这里找到:

我认为这不是问题所在。首先,我在GET请求中尝试了同样的方法,但它也不起作用。我被告知rails只检查PUT、POST和DELETE的CSRF。此外,我甚至从我的控制器代码中删除了protect_from_forgery行,但它仍然不起作用。顺便说一下,这与问题无关,但是,如果我从javascript bookmarklet调用它,您能教我如何使用您提到的erb格式吗?我知道如果它包含在视图内联中,我可以这样做,但这是一个独立的javascript文件,正在被另一个javascript调用。