Вызов Devise из букмарклета javascript - PullRequest
1 голос
/ 17 ноября 2011

У меня есть Javascript Bookmarklet, который работал в однопользовательском режиме. Итак, как он работал, я нажимал на свой букмарклет в браузере, и он вставлял удаленный JavaScript на моем сервере. Этот второй javascript, в свою очередь, выполняет ajax-вызов на мой сервер rails с кодом, который выглядит примерно так:

$.post(
    "http://192.168.1.2:3000/stuffs",
    {stuff: JSON.stringify({"link":address})},
    "json"
);

Этот код работал, когда я работал над своим проектом без учетной записи. Но сегодня я добавил систему аутентификации. Так что теперь у системы есть пользователи. В коде моего контроллера у меня есть

before_filter :authenticate_user!

def create
    puts current_user
    @stuff.user = current_user
    ...
end

Это не работает. current_user ничего не возвращает. Я просто пытаюсь выяснить, существует ли существующий сеанс (есть ли кто-то вошел в систему), а затем хочу создать запись под этим пользователем. В этом случае пользователь has_many вещи и вещи принадлежат пользователю. В остальном сайт работает нормально. Кажется, что попытка доступа с помощью букмарклета не сохраняет сеанс.

Кто-нибудь знает, что происходит?

1 Ответ

2 голосов
/ 17 ноября 2011

Полагаю, вам нужно передать параметр токена аутентификации в параметры, отправленные jQuery, например:

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

Дополнительные документы по form_authenticity_token можно найти здесь: http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html#method-i-form_authenticity_token

...