【问题标题】:Disable IP address logging with devise使用设计禁用 IP 地址记录
【发布时间】:2018-05-03 09:55:44
【问题描述】:

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

【问题讨论】:

    标签: devise ip-address ruby-on-rails-5.1


    【解决方案1】:

    您的答案看起来不错,但如果您只想跟踪特定用户的 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。

    【讨论】:

    • 是的,但是按照我设置的方式,您可以选择任何可追踪的对象,而不仅仅是 IP,但对于 IP,我会说这是最好的。
    • 真的! :) 为这个问题干杯——真的很有用!
    【解决方案2】:

    将此方法添加到用户模型可以让您对跟踪的内容有选择性,在我的情况下,我在跟踪 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      相关资源
      最近更新 更多