Как передать детали аутентификации в действие контроллера rails? - PullRequest
2 голосов
/ 15 мая 2011

У меня есть действие контроллера, которое, как ожидается, будет вызвано 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.

Как мне передать детали аутентификации, чтобы это действие контроллера работало с devise? Еще лучше, есть ли способ сделать это прозрачным? Я не хочу передавать данные аутентификации снова и снова для каждого запроса 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 Ответ

2 голосов
/ 15 мая 2011

Devise поддерживает сессии.

Это может быть вашей проблемой.

...