Почему devise запрашивает базовую аутентификацию, когда я уже вошел в систему? - PullRequest
3 голосов
/ 27 апреля 2011

Devise был моим плагином для аутентификации для нескольких последних проектов Rails 3, над которыми я работал. В текущем проекте я использую ванильную установку devise с пользовательской моделью, использующей модули конфигурации по умолчанию.

Всякий раз, когда я нажимаю ссылку, которая отправляет сообщение ajax на контроллер, который использует Devise:

before_filter :authenticate_user!

запрашивает базовую аутентификацию. Я никогда не видел, чтобы это случилось раньше, и мне было интересно, есть ли у кого-нибудь идея о том, что может быть причиной этого.

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

AJAX будет (обычно) типом содержимого javascript или json.

В подобных случаях devise не будет перенаправлять вас на страницу входа, он выдаст код ответа 401 (вход в систему).требуется).Ваш браузер получает 401 и дает вам возможность войти в систему с HTTP-аутентификацией.

Возможно, вы захотите проверить свое мнение, вошел ли пользователь в систему, прежде чем отправлять информацию ajax в защищенную конечную точку.

1 голос
/ 04 мая 2011

http://jasoncodes.com/posts/rails-csrf-vulnerability

В приведенной выше ссылке упоминается, что Rails требует авторизационный токен со всеми "с каждым не-GET-запросом Ajax" для Devise.(из-за защиты от подделок)

В статье также упоминается, как это сделать, но я все еще выясняю эту часть.

Если вы этого НЕ делаете, тогдаПохоже, что Rails требует, чтобы вы вошли во второй раз (обычно только один раз).

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