Связь с приложением Rails через POST после аутентификации OmniAuth - PullRequest
1 голос
/ 25 июля 2011

Привет! Я создаю проект, в котором я использую OmniAuth для аутентификации пользователя. Он работает правильно, за исключением того, что в моем приложении я хотел бы отправить информацию на сервер через javascript, используя POST.

Однако, когда я отлаживаю приложение, я замечаю, что оно не может найти пользователя, если я отправляю запрос, используя POST - (я также считаю, что переменная request.env ["omniauth.auth"] не существует, когда я просматривал контрольная точка).

Я выводлю некоторую отладочную информацию обратно в приложение через JSON. Когда я изменяю XMLHttpRequest для использования GET, он работает, и я получаю верную информацию.

Как правильно использовать, возможно, у меня неправильный маршрут? Я также не уверен в использовании _method - это поможет? Может быть, я просто смотрю в неправильном направлении?

Как я могу отправить через POST в javascript после аутентификации с помощью OmniAuth и по-прежнему получать current_user

1 Ответ

1 голос
/ 25 июля 2011

Таким образом, проблема заключается в том, как работает protect_from_forgery. Что вам нужно сделать, это проверить, что ваш запрос безопасен, и защиту от подделки следует игнорировать, вы можете сделать это, внедрив forgery_whitelist? в вашем классе ApplicationController:

def forgery_whitelist?
  request.user_agent ~= /iPhone/ || self.current_user || super
end

В этом методе вы можете реализовать логику для внесения в белый список запроса и заставить Rails игнорировать защиту от подделки.

...