5

设计允许用户电子邮件查找。

这是一个特定的隐私问题。问题是,如果您要求新的确认电子邮件,您可以输入您想要的任何电子邮件地址,如果在数据库中找不到它,您会得到“未找到”,因此任何人都可以检查某个电子邮件是否已注册。

有什么好的方法可以解决这个问题?我还没有将此发布到设计组,但我不确定这是否是“通缉”行为。

违规路线:/users/confirmation

我不能选择禁用设计的确认模块。任何人都有一个很好的解决方法来解决这个问题?

4

2 回答 2

6

Devise 有一个偏执模式,可以帮助您避免用户枚举。您可以在 Devise wiki 上获得更多信息:

https://github.com/plataformatec/devise/wiki/How-To:-Using-paranoid-mode,-avoid-user-enumeration-on-registerable

于 2012-06-28T02:40:10.613 回答
0

正如 Devise 在他们的文档中指出的那样,偏执模式不会避免用户在注册时枚举。如果您正在使用confirmable,您可以通过在所有用户尝试注册时显示检查其电子邮件的通知来解决此问题。

class RegistrationsController < Devise::RegistrationsController

  def create
    super do |resource|
      handle_nonunique_email if resource.errors.added?(:email, :taken)
      return if performed?
    end
  end

  private

  def handle_nonunique_email
    resource.errors.delete(:email)

    if resource.errors.empty?
      user = User.find_by_email(resource.email)
      user.send_confirmation_instructions unless user.confirmed?
      respond_with resource, location: after_inactive_sign_up_path_for(resource)
    end
  end
end

在这里写了更多关于这个的内容。

于 2018-04-16T17:58:22.670 回答