繁体   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