Ruby on rails designe允许在密码重置期间使用空密码

Ruby on rails designe允许在密码重置期间使用空密码,ruby-on-rails,devise,Ruby On Rails,Devise,我有一个Rails 3.2应用程序设置与设计。除了我重置密码(通过内置的路由和方法)时,Desive允许使用空白密码外,一切都很好。它将验证长度,并验证是否匹配确认是否至少有一个字符。我有它的设置,在一个用户帐户中,他们可以更新他们的个人资料,而无需输入密码,但我不认为这与重置密码有任何关系 感谢您的帮助 designe.rb-> user.rb->您应该让Deviate处理程序进行密码验证:或者使用Deviate用于验证的代码。 代码的问题是,只有在用户没有设置密码(!encrypted_pa

我有一个Rails 3.2应用程序设置与设计。除了我重置密码(通过内置的路由和方法)时,Desive允许使用空白密码外,一切都很好。它将验证长度,并验证是否匹配确认是否至少有一个字符。我有它的设置,在一个用户帐户中,他们可以更新他们的个人资料,而无需输入密码,但我不认为这与重置密码有任何关系

感谢您的帮助

designe.rb->


user.rb->

您应该让Deviate处理程序进行密码验证:或者使用Deviate用于验证的代码。
代码的问题是,只有在用户没有设置密码(!encrypted_password.blank?)和其他条件时,才进行验证。恢复密码时,用户已经设置了密码,因此您不会在密码更新时运行验证…

感谢您为我指明了正确的方向。问题是由您描述的内容引起的。但是,如果我让Deavise处理验证或使用与他们相同的代码,则即使在用户登录后更新其帐户时,用户也必须提供密码。要解决此问题,我只需在验证中检查rest\u密码\u令牌:

def password_required?
  # If resetting the password
  return true if reset_password_token.present? && reset_password_period_valid?

   # If the person already has a pass, only validate if they are updating pass
  if !encrypted_password.blank?
    password.present? || password_confirmation.present?
  end
end
*更新 我刚刚更新了这个,以确保密码令牌没有过期