Разработать создание HTTP-аутентификации на XHR и выход из системы - PullRequest
4 голосов
/ 05 мая 2011

У меня куча проблем с Devise, использующим OmniAuth для аутентификации моего приложения на Rails.Я перезапускаю свой сервер и открываю новую вкладку в режиме инкогнито (чтобы очистить куки) и загружаю мое приложение.Я вхожу, а затем перейти к приложению.

Когда я попадаю на страницу, которая вызывает аутентифицированное действие через AJAX, он запрашивает имя пользователя и пароль через HTTP Basic Authentication.Я отключил это в моем devise.rb .

config.http_authenticatable = false
config.http_authenticatable_on_xhr = false

Когда я затем возвращаюсь на предыдущую страницу, он перенаправляет меня на страницу входа в систему и запрашивает вход в систему.Это также происходит, когда я захожу на страницу, на которой не требуется аутентификация, а затем возвращаюсь на страницу с аутентификацией .

. Это очень расстраивает.Я распаковал Devise and Warden в свой каталог vendor / gems , чтобы попытаться отладить его, но, честно говоря, не могу понять, с чего начать.Любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 26 сентября 2011

Ваш AJAX-вызов, вероятно, не устанавливает токен CSRF. Возможно, вам придется обновить свой UJS-гем (возможно, jquery-rails) или вручную установить в заголовке X-CSRF-Token значение тега. См. Этот вопрос: Создать сеанс, срок действия которого истекает при вызове .js [AJAX] . Вы можете проверить, является ли это проблемой, временно отключив защиту CSRF, нажав config.allow_forgery_protection = false в config/application.rb.

Если вы идете ручным маршрутом, вам, вероятно, следует сначала получить значение метатега 'authenticity_token' и использовать его в качестве имени фактического метатега токена, а не жестко кодировать ссылку на 'csrf-token' .

Я бы порекомендовал обновить до Rails 3.0.10 или 3.1, если вы можете. У меня все еще были проблемы с 3.0.7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...