是否可以限制为每个用户在一段时间内可恢复的设备发送的电子邮件数量?

Is it possible limit the number of emails sent for devise recoverable in a period of time for each user?

是否可以限制每个用户在一段时间内可恢复的设备发送的电子邮件数量?如何防御恶意请求?

我会使用 grecaptcha 来保护您让用户挽救他的帐户的表单。

它真的很容易使用,可以将它包含在您的 rails 应用程序中。

在您看来:

<%= form_for @user do |f| %>
  <%= recaptcha_tags %>
<% end %>

在您的控制器中,创建操作:

def create
  verify_recaptcha(model: @user) # => returns true or false
end

要限制:"emials sent for devise recoverable"

示例 Gemfile:

gem 'simple_captcha2'

路线:

devise_for :users, :controllers => { ..., :passwords => 'passwords', ... }

app/controllers/passwords_controller.rb:

class PasswordsController < Devise::PasswordsController
prepend_before_action :require_no_authentication
#
# GET /resource/password/new
def create
    if simple_captcha_valid?
        super
    else
        ....
    end
end

结束

app/views/devise/passwords/new.html.erb 进入 form_for:

<%= show_simple_captcha %>