2016-11-02 24 views
0

У меня есть задача, когда мне нужно позаботиться о подтверждении токенов csrf в приложении Rails 2.Является ли токен подлинности (csrf) отправленным с тегом формы html в Rails 2

Я дал protect_from_forgery в application_controller.rb. Теперь в моем приложении, большинство мест, я использую HTML форму вместо рельсов

<%form_tag%> 

Вопрос:

Rails <%form_tag%> по умолчанию отправляет маркер подлинности.

Будет ли html form тегом тоже сделать это? Или мне нужно будет добавить скрытое поле токена аутентификации вручную во всех тех местах, где я использую <html>?

ответ

0

Я думаю, что рекомендуется использовать <% form_tag%>, поскольку они прикрепляют токен аутентичности hidden_field. Если нет, вам нужно будет вручную добавить скрытое поле, если вы используете тег формы html.

Мое предложение состоит в том, чтобы изменить все на использование form_tag и позволить рельсам обрабатывать остальное. Немного боли теперь сэкономит вам много долгов по коду в будущем.

+0

Итак ... это то, что форма html не будет отправлять токен аутентификации? –

+0

Да, это причина для form_tag, его предположим, чтобы помочь вам автоматически создать скрытое поле токена аутентичности. –

0

Вы можете переписать все формы на form_tag.

Также вы можете просто вставить токен аутентификации в форму самостоятельно. Что-то вроде этого:

<form action=... > 
    <%= hidden_field_tag :authenticity_token, form_authenticity_token %> 
    ... rest of your form ... 
</form> 
+0

Спасибо за этот ответ. Мне придется вручную добавить токен. –