<%=password_field 'email_setting','emailpasswd' %>
密碼文本框導軌3中的值爲空?
在此@ email_setting.emailpasswd中有值密碼(@ email_setting.emailpasswd =「password」)。
但是在email_setting窗體中編輯密碼文本框是加載空的。而不是我需要顯示一些字符(#######)來表明密碼已經輸入。
我用Rails 3
<%=password_field 'email_setting','emailpasswd' %>
密碼文本框導軌3中的值爲空?
在此@ email_setting.emailpasswd中有值密碼(@ email_setting.emailpasswd =「password」)。
但是在email_setting窗體中編輯密碼文本框是加載空的。而不是我需要顯示一些字符(#######)來表明密碼已經輸入。
我用Rails 3
這是軌道的安全預防措施,該密碼字段不預先填充。否則,它們將在頁面源代碼中以純文本顯示。
如果你真的想雖然有顯示出來,需要繞行的形式助手和後備純HTML:
<input type="password" name="email_setting[emailpasswd]" value="<%= @email_setting.emailpasswd %>" />
但是,不會,如果你有你的密碼散列工作。你不能「解密」散列密碼,所以你不能在這裏以純文本顯示它們。
password_field
默認值爲nil
。這使得默認情況下使用密碼是安全的。如果你想渲染password_field
的價值,你比如做
f.password_field(:password, :value => @user.password)
https://github.com/rails/rails/commit/1851af84c1c7244dc416be9c93a4700b70e801e3
你也可以做這樣的事情:
在/config/initializers/my_constants.rb ,請在密碼輸入框中設置一個常數和您要顯示給用戶的值。
STARS_PASSWORD = '*******'
在用戶模型中,創建一個方法,我們將從窗體調用以確定在密碼輸入框中顯示給用戶的內容。
class User < ActiveRecord::Base
def password_form_value
password.present? ? STARS_PASSWORD : ''
end
end
在窗體中,將STARS_PASSWORD顯示爲輸入表單上的值(如果實際上用戶已設置了密碼)。
<%=form.password_field :password, :value => @user.password_form_value %>
在UsersController中,如果提交的密碼是STARS_PASSWORD,則在更新前刪除提交的密碼。
params[:user].delete :password if params[:user][:password] == STARS_PASSWORD
注意:如果你對用戶模型密碼驗證(例如,密碼需要有字母和數字),你還需要修改驗證允許STARS_PASSWORD。