![](/img/trans.png)
[英]How to avoid getting user private data (user's email) on server (Django Social Auth)
[英]Getting user`s UUID from django server
我有一個帶有管理面板的 django 服務器。
不同的用戶在那里進行更改,這通過數據庫中的審計日志保存並顯示在“歷史記錄”中。
但有些情況下,用戶以另一個用戶的帳戶進入並代表他進行更改。
為了識別從哪個設備進行了這個或那個更改,一個不錯的決定是記錄有關從中進行更改的用戶的 IP 及其唯一設備編號的數據。
通過重載“AuditlogMiddleware”class 中的幾個方法,我通過“uuid.UUID(int=uuid.getnode())”得到了想要的結果。
(本地測試,因為prod服務器負載過重,沒辦法做測試委)
from __future__ import unicode_literals
import threading
import time
from auditlog.middleware import AuditlogMiddleware
threadlocal = threading.local()
class ExtendedAuditlogMiddleware(AuditlogMiddleware):
def process_request(self, request):
threadlocal.auditlog = {
'signal_duid': (self.__class__, time.time()),
'remote_addr': request.META.get('REMOTE_ADDR'),
}
super(ExtendedAuditlogMiddleware, self).process_request(request)
**#changes here
import uuid
threadlocal.auditlog['additional_data'] = str(uuid.UUID(int=uuid.getnode()))+" | "+request.META["USERNAME"]**
# @staticmethod
def set_actor(self, user, sender, instance, signal_duid, **kwargs):
super(ExtendedAuditlogMiddleware, self).set_actor(user, sender, instance, signal_duid, **kwargs)
**#changes here
instance.additional_data = threadlocal.auditlog['additional_data']**
但問題是我想我得到的不是用戶的 UUID,而是服務器的 UUID,因為我猜是因為無法訪問用戶。 我找不到資料,也想不出自己的解決辦法。
問題 - 是否有可能從服務器獲取有關 django 管理員用戶設備的信息?
如果沒有,我可以使用什么代替 UUID 來識別在 django 管理面板中進行更改時使用了哪個設備?
謝謝大家!
嘗試在模板中使用 javascript 來發送此信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.