持有发送重置密码的电子邮件,直到某个指示器设置为rails

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了持有发送重置密码的电子邮件,直到某个指示器设置为rails相关的知识,希望对你有一定的参考价值。

我有一个PasswordController继承自Devise::PasswordsController,我做了一个create函数,帮助我发送用户重置密码通知电子邮件,其实现:

  def create
    # I need to put some condition on the next line
    self.resource = resource_class.send_reset_password_instructions(resource_params)
    if successfully_sent?(resource)
      render :json => "Request successfully sent"
    else
      render :json => resource.errors, :status => 422
    end
  end

它工作正常,但如果用户点击重置密码5次将发送5封电子邮件(如果发生延迟或用户从不等待的东西,他们需要快速转发),最后一个只能工作,所以我想禁用发送电子邮件直到这个令牌过期或其他什么,我搜索它但找不到任何东西,我想在用户表中创建一个新的属性,这将是一个datetime,以指示什么时候是最后一次发送电子邮件,但我问如果有更好的方法来使用设计。

答案

你可以使用user.reset_password_period_valid?

def reset_password_period_valid?
  reset_password_sent_at && reset_password_sent_at.utc >= self.class.reset_password_within.ago.utc
end

这基本上就是你建议的实现;但如果您使用的是Rcoverable设计模块,它已经内置了!

以上是关于持有发送重置密码的电子邮件,直到某个指示器设置为rails的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 重置密码通知不会发送

通过电子邮件发送临时密码重置密码

Wordpress REST API - 发送重置密码链接

使用电子邮件保护密码重置 URL? [复制]

使用gmail和Django注册不会重置密码电子邮件

Firebase Auth 密码重置:如何正确发送包含确认码的密码重置电子邮件?