簡體   English   中英

從 django 服務器獲取用戶的 UUID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM