В моем приложении у меня есть форму для создания Города.может отправить форму много раз с тем же токеном csrf
Все работает нормально, если для опции дистанционного управления на форме установлено значение false. Однако есть проблема, когда я меняю его на true.
Когда форма отправлена удаленно, я могу представить две формы с тем же CSRF токен и вместо получения ActionController :: InvalidAuthenticityToken ошибку для второго запроса. Вторые запросы также создавали бы объект, который не должен происходить.
Вы знаете причину этой проблемы и как ее исправить?
<%= form_for [:administrators,@city],remote: true,:authenticity_token => true do |f| %>
<div class="field">
<%= f.label :province_id,'Select a province' %>
<%= f.select :province_id,options_from_collection_for_select(Province.all, :id,:name, @city.province_id),{ :prompt => 'Select province' } %> <br>
<div class="errors alert-box alert" style="display:none;"></div>
</div>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name%>
<div class="errors alert-box alert" style="display:none;"></div>
</div>
<div class="action">
<% if @city.id? %>
<%= f.submit 'Update', class:'button' %>
<btn class='cancel_form_button button tiny alert'> </btn>
<% else %>
<%= f.submit 'Create', class:'button' %>
<% end %>
</div>
Запросы поступают из вашего кода, и они __are__ аутентичны. Таким образом, токен выполняет свое обещание. Он не обещает защитить вас от повторных запросов, не так ли? –
@SergioTulentsev, если вы установили пульт в значение false, а затем попробуйте отправить форму во второй раз, вы получите сообщение об ошибке ActionController :: InvalidAuthenticityToken. – Sahand
Как отправить форму во второй раз, если страница перезагружается? –