我是Rails的新手。
我在用户控制器中使用has_secure_password。我意识到它应用blowfish来安全地存储密码,但我想在离开浏览器客户端之前加密密码。如果这意味着密码被加密两次 - 那对我来说没问题。
所以,在下面的简单登录表单中,如何调用Javascript函数我已经在提交表单之前将MD5应用于密码?当然 - 我可以发送'标准'HTML和onSubmit()javascript调用,但肯定有办法做'Rails Way'。怎么样?
提前致谢!
<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 Way'可以做到这一点,所以按照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>
答案 0 :(得分:-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>