Проблема сессии с Rails 3 - PullRequest
       18

Проблема сессии с Rails 3

0 голосов
/ 12 апреля 2011

Я использую Authlogic 2.1.6 для авторизации в Rails 3.0.5 и у меня проблема с файлом cookie сеанса с AJAX-запросами.

После вызова POST или PUT AJAX я получаю ответ 401 иновый сеансовый ключ.После этого каждый звонок вернет 401 ответ.Перед вызовом POST или PUT каждый вызов GET завершается успешно.

Это не происходит в тестовом режиме, только в режиме разработки и производства.

Кто-нибудь знает, как этого избежать?

РЕДАКТИРОВАТЬ: Я думаю, что есть проблема с ключом подлинности защиты от подделки, потому что после отключения защиты от подделки все работало нормально.

Это заголовок запроса, который выдаст 401:

Accept:*/*
Cache-Control:max-age=0
Content-Type:application/json; charset=UTF-8
Origin:http://localhost:3000
Referer:http://localhost:3000/
User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; de-de) AppleWebKit/533.19.4    (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4
X-Requested-With:XMLHttpRequest

Запись в журнале Rails выглядит следующим образом:

Started POST "/users.json" for 127.0.0.1 at Tue Apr 12 10:47:33 +0200 2011
Processing by UsersController#create as JSON
Parameters: {"user"=>{"password_confirmation"=>"[FILTERED]", "group_id"=>2, "lastname"=>"test1", "prename"=>"test1", "password"=>"[FILTERED]", "login"=>"test1"}}
Rendered text template (0.0ms)
Completed 401 Unauthorized in 19ms (Views: 0.9ms | ActiveRecord: 3.0ms)

EDIT2:

Следующая странная вещь: я отправляю заголовок BASIC AUTHвместо куки с идентификатором сессии я не получаю 401, очень странно

1 Ответ

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

Основная ошибка в 'подлинности защиты от подделки' заключается в том, что вы забыли добавить csrf_meta_tag

в свой макет и добавьте его в тег заголовка.Без этого ни один Ajax-запрос не обходится с хорошим токеном.

Если это не с Ajax, используйте помощник simple_form для генерации токена в вашей форме

...