使用 devise 禁用 IP 地址日志记录

Disable IP address logging with devise

我目前正在从我们的应用程序中删除 IP 日志记录,我想知道使用 Devise 执行此操作的最佳方法是什么?

将此方法添加到用户模型可以让您有选择性地跟踪什么,在我的例子中,我在跟踪 IP 地址时是有选择性的:

  def update_tracked_fields(request)
    old_current = current_sign_in_at
    new_current = Time.now.utc
    self.last_sign_in_at     = old_current || new_current
    self.current_sign_in_at  = new_current

    if admin?
      old_current = current_sign_in_ip
      new_current = request.remote_ip
      self.last_sign_in_ip     = old_current || new_current
      self.current_sign_in_ip  = new_current
    end

    self.sign_in_count ||= 0
    self.sign_in_count += 1
  end

您的答案看起来不错,但如果您只想跟踪特定用户的 IP,一个(不那么冗长但可能更令人困惑)替代方案可能是...

protected

# Override Devise logic for IP tracking
# https://github.com/plataformatec/devise/blob/master/lib/devise/models/trackable.rb#L45
def extract_ip_from(request)
  # Only track the IP for admin users (per GDPR rules).
  request.remote_ip if admin?
end

这会导致为非管理员用户设置 nil IP。