我有一个页面,其中包含登录表单以及要注册的表单。这是代码:
<h3>Log In</h2>
<%= form_for Spree::User.new, :as => :spree_user, :url => spree.spree_user_session_path do |f| %>
<%= devise_error_messages! %>
<%= f.email_field :email, placeholder: "Email" %>
<%= f.password_field :password, placeholder: "Password" %>
<div><%= f.submit "Log In", class: "registrationbuttons" %></div>
<% end %>
<h3>Register Now</h2>
<%= form_for Spree::User.new, :as => :spree_user, :url => spree.spree_user_registration_path do |f| %>
<%= f.email_field :email, placeholder: "Email" %>
<%= f.password_field :password, placeholder: "Password" %>
<%= f.password_field :password_confirmation, placeholder: "Confirm Password" %>
<div><%= f.submit "Register", class: "registrationbuttons" %></div>
<% end %>
如果用户使用“登录”表单,并询问他们是否希望他们的浏览器记住密码 - 如果他们在下次看到此页面时选择“是”,则“立即注册”表单中的字段(他们可能从未使用过用户)填充。
如何确保只保存正确的字段?
答案 0 :(得分:0)
我在这里找到了解决方案:http://benjaminjshore.info/2014/05/chrome-auto-fill-honey-pot-hack.html
我添加了这一行:
<input type="password" name="password_fake" id="password_fake" value="" style="display:none;" />
到我的第二张form_for(被错误记住的字段)。它现在看起来像这样:
<%= form_for Spree::User.new, :as => :spree_user, :url => spree.spree_user_registration_path do |f| %>
<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input type="password" name="password_fake" id="password_fake" value="" style="display:none;" />
<%= f.email_field :email, placeholder: "Email" %><br>
<%= f.password_field :password, placeholder: "Password" %><br>
<%= f.password_field :password_confirmation, placeholder: "Confirm Password" %><br>
<div><%= f.submit "Register", class: "registrationbuttons" %></div>
<% end %>
现在这个领域没有被人记住。