Обнаружение файлов cookie Rails?

Привет, я новичок в рельсах и только что понял, что моему приложению Rails, которое я создал с помощью учебника для начинающих, нужны файлы cookie для правильной работы, иначе после отправки формы выдается ошибка ActionController::InvalidAuthenticityToken.

Как я могу легко реализовать обнаружение файлов cookie?


person 12d3    schedule 01.10.2010    source источник


Ответы (1)


InvalidAuthenticityToken означает, что вы отправляете неправильный токен CSRF со своей формой. Вы должны создавать форму с помощью встроенных методов Rails. Это приводит к вставке скрытого ввода authenticity_token в вашу форму. Rails проверит authenticity_token при отправке формы.

Что заставляет вас полагать, что «обнаружение файлов cookie» является частью проблемы?

person Bob Aman    schedule 01.10.2010
comment
Привет Боб, я думаю, что мы неправильно поняли друг друга. Аутентификация_токена реализована в форме и активирована и работает, но только тогда, когда пользователь разрешает куки для страницы. Проблема в том, что файлы cookie не могут быть установлены. Это дает страницу ошибки InvalidAuthenticityToken. Я ищу простой способ внедрить обнаружение, если пользователь включил файлы cookie, поэтому, если нет, я хотел бы показать ему сообщение, чтобы включить файлы cookie, чтобы страница работала правильно. - person 12d3; 02.10.2010
comment
Вам не кажется, что проблема связана с отключенными файлами cookie? - person 12d3; 02.10.2010
comment
ruby-forum.com/topic/187822 подтверждает, что проблема связана с файлами cookie. - person 12d3; 02.10.2010
comment
Правильно, CSRF требует хранилища сеансов, потому что вы должны убедиться, что токен был выдан пользователю. Очевидной альтернативой является отключение CSRF или использование какого-либо другого механизма состояния, если вы действительно не можете использовать файлы cookie. Однако другие механизмы состояния изначально не поддерживаются в Rails. - person Bob Aman; 02.10.2010
comment
Привет, Боб, я не хочу его выключать. я думал о решении, подобном упомянутому здесь railsforum.com/viewtopic.php?id=40755 к сожалению, этот код, похоже, не работает: def new flash.now[:alert] = Вам нужно включить куки! если params[:cookies_disabled] == 1 конец - person 12d3; 02.10.2010
comment
Защита CSRF требует поддержания некоторой формы состояния. Файлы cookie являются здесь стандартным механизмом. Вы можете использовать альтернативный механизм управления состоянием, чтобы обойти тот факт, что ваши пользователи отключили файлы cookie, но я не рекомендую этого делать. Правильнее всего обнаружить, что файлы cookie отклоняются, и кричать на ваших пользователей. Пользователь ясно дал понять, что не хочет, чтобы его отслеживали, и вам нужно управлять состоянием. Эти две цели противоречат друг другу, и попытка обойти это, делая что-то сумасшедшее, например, evercookies, не является хорошим результатом. - person Bob Aman; 04.10.2010