如何将设计认证详细信息传递给rails控制器操作?

时间:2011-05-15 07:05:53

标签: ruby-on-rails ruby authentication controller devise

我有一个控制器动作,预计由jquery调用。这是电话:

    $.ajax({
        url: "/comments.json",
        type: "POST",
        dataType: "json",
        data: {
            commentable_id: $("#addCommentForm").attr("data-site-update-id"),
            commentable_type: 'SiteUpdate',
            content: $("#addCommentForm textarea#content").val()
        },
        success: function(comment) {

        }
    });

它工作正常,但由于某种原因,“current_user”在控制器内部为零。如果我强制authenticate_user!作为过滤器,rails返回HTTP Unauthorized。

如何传递身份验证详细信息,以便此控制器操作与设计一起使用?更好的是,有没有办法让我透明化?我不想为每个ajax请求反复传递身份验证详细信息...

在Java中,一旦用户登录......他们就会登录。你没有从url到url传递任何东西 - 它在某个地方的某个会话中,并且它都是透明地发生的。有没有办法用铁轨做到这一点?我不想专注于这些细节。

由于

编辑:解决方案是将以下内容添加到您的javascript中:

$(document).ajaxSend(function(e, xhr, options) {
    var token = $("meta[name='csrf-token']").attr("content");
    xhr.setRequestHeader("X-CSRF-Token", token);
});

1 个答案:

答案 0 :(得分:2)

Devise会保持会话。

This可能是你的问题。