1

我是 Rails 新手。

我在用户控制器中使用 has_secure_password 。我意识到它使用河豚来安全地存储密码,但我希望在密码离开浏览器客户端之前对其进行加密。如果这意味着密码被加密两次 - 我很好。

那么,在像下面这样的简单登录表单中,如何在提交表单之前调用我已经拥有的 Javascript 函数来将 MD5 应用于密码?当然——我可以只发送“标准”HTML 和 onSubmit() javascript 调用,但肯定有一种方法可以通过“Rails 方式”来实现。如何?

提前致谢!

<h1>Log In</h1>

<%= form_tag sessions_path do %>
  <div class="field">
    <%= label_tag :email %><br />
    <%= text_field_tag :email, params[:email] %>
  </div>
  <div class="field">
    <%= label_tag :password %><br />
    <%= password_field_tag :password %>
  </div>
  <div class="actions"><%= submit_tag "Log In" %></div>
<% end %>

更新:

似乎没有“Rails 方式”可以做到这一点,所以按照 Samar 的建议,我只是在显式地给表单一个 id 之后,使用 jQuery 向表单单击事件添加了一个侦听器。以下是包含更改和错字更正的完整代码段。请注意,我使用的是我自己的 MD5 库。

<h1>Log In</h1>

<%= form_tag sessions_path, :id => 'user_login_form' do %>
    <div class="field">
        <%= label_tag :email %><br />
        <%= text_field_tag :email, params[:email] %>
     </div>
    <div class="field">
        <%= label_tag :password %><br />
        <%= password_field_tag :password %>
    </div>
    <div class="actions"><%= submit_tag "Log In" %></div>
<% end %>

<script type="text/javascript">
    $("#user_login_form").click(function(){
        $("#password").val(EncryptMD5($("#password").val()));
    });
</script>
4

1 回答 1

-1

从http://code.google.com/p/crypto-js/下载 cryptojs 。如果您的密码字段的 ID 为“password”并且提交按钮的 ID 为“form_submit”。然后执行以下操作:

<script type="text/javascript" src="crypto.js">
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js">
    <script>
    $("#form_submit").click(function){
    $("#password").val(CryptoJS.MD5($("#password").val()));
    });
    </script>
于 2012-09-25T04:05:41.120 回答