rails,提供密码的可视反馈,同时保证密码安全

时间:2014-11-04 16:24:11

标签: ruby-on-rails html-form

我存储在数据库中的密码。
用户应该能够设置一个新的。
我还使用attr_encrypted gem将其存储为加密文本(对称因为我需要它回来连接到其他服务而不仅仅是登录)但这是另一个故事。
当我显示表单时,出于明显的安全原因, ruby​​助手的默认行为是不将密码发送回浏览器
这是代码:

<%= f.input :app_password, :as => :password %>

这种行为可能没问题,但是它会产生一些问题。

  • 如果用户使用空密码保存表单,密码将被删除。我应该测试并避免空密码节省,但在某些应用程序中,null密码是可以接受的,这样做可以防止这种可能性。
  • 它没有向用户提供关于他或她已编译密码字段的视觉反馈。
  • 使用验证并不能很好地发挥作用

为了获得最标准的行为(即不更改密码&#39;复选框),我有什么选择?

1 个答案:

答案 0 :(得分:0)

请在表单中包含密码字段:

<%= f.password_field :app_password %>

标准用途和密码设置为:

向您的用户模型添加对has_secure_password

的调用

向用户添加字段以存储入站密码,迁移:add_column :users, :auth_token, :string

在创建生成令牌之前:

begin
  self.auth_token = SecureRandom.urlsafe_base64
end while User.exists?(auth_token: self.auth_token)

使用@user.authenticate(params[:password])

对您的用户进行身份验证

使用3个字段,old_password,password和password_confirmation更新另一个表单的密码。