【发布时间】:2018-05-03 09:55:44
【问题描述】:
我目前正在从我们的应用程序中删除 IP 日志记录,我想知道使用 Devise 执行此操作的最佳方法是什么?
【问题讨论】:
标签: devise ip-address ruby-on-rails-5.1
我目前正在从我们的应用程序中删除 IP 日志记录,我想知道使用 Devise 执行此操作的最佳方法是什么?
【问题讨论】:
标签: devise ip-address ruby-on-rails-5.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 地址时是有选择性的:
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
【讨论】: