Страница регистрации также имеет форму входа, получая InvalidAuthenticityToken - PullRequest
0 голосов
/ 04 марта 2011

На моей странице есть 2 формы, форма № 1 создается с использованием:

<%= form_for (@user) .... %>

2-я форма для входа в систему выполняется вручную:

<form ...>
</form>

Когда яПопробуйте войти в систему, используя форму # 2, я получаю:

ActionController::InvalidAuthenticityToken

Мой application_controller имеет:

protect_from_forgery

Глядя на HTML, я вижу:

<meta name="csrf-param" content="authenticity_token"/> 
<meta name="csrf-token" content="xxxxx="/> 

(Я изменил токен для этого поста на xxxx ..)

Не знаете, в чем проблема?Разрешены ли 2 формы на странице?

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Вам необходимо использовать помощник form_for или form_tag.Маркер подлинности автоматически генерируется и добавляется в HTML и позволяет Rails предотвращать против CSRF-атак .

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

2 голосов
/ 04 марта 2011

forms_for автоматически включает скрытый ввод с токеном подлинности, поэтому он отправляется вместе с формой. Это необходимо сделать и с помощью формы, созданной вручную.

Добавьте в форму следующий помощник по тегам:

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