如何跳过对安全令牌重新生成的验证

时间:2019-06-06 02:34:56

标签: ruby-on-rails validation

因此,我正在发送密码重置电子邮件,并且在如何解决此问题时遇到了麻烦,因此在用户重置密码之后。我重新生成了一个新的密码重置令牌(我知道这很不好,在我发送密码重置请求时未生成它,但是那没有用,所以我尝试了这个。)。每次重新生成令牌时,它都不会跳过我在模型中设置的验证。

如前所述,我尝试过将其切换,在发送电子邮件之前以及现在他们重置密码之后重新生成新令牌。我还查看了has_secure_token的文档,并且在重新生成令牌时看不到可以跳过验证的任何地方。

这是我的代码,用于在User模型中重置密码。

def reset_password(password)
  self.regenerate_reset_password_token
  self.password = password
  save(:validate => false)
end

重新生成令牌时,我收到验证用户密码的错误,如前所述,不确定在上面代码的第2行上重新生成令牌时如何跳过验证。

Validation failed: Password can't be blank, Password is too short (minimum is 8 characters)

1 个答案:

答案 0 :(得分:0)

你可以

def generate_password_reset_token
  self.reset_password_token = generate_token
  self.reset_password_sent_at = Time.now
  save!
end


def generate_token
  SecureRandom.base58(5)
end