使用 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。
我目前正在从我们的应用程序中删除 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。