Получение UUID пользователя с сервера django
У меня есть сервер django с панелью администратора.
Разные пользователи вносят туда изменения, которые сохраняются через auditlog в базе данных и отображаются в "истории".
Но бывают ситуации, когда пользователь заходит под учетной записью другого пользователя и вносит изменения от его имени.
Для того чтобы определить, с какого устройства было сделано то или иное изменение, было хорошим решением записать также данные об IP пользователя, с которого было сделано изменение, и его уникальный номер устройства.
Перегрузив несколько методов в классе "AuditlogMiddleware", я получил желаемый результат через "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 не пользователя, а сервера, потому что доступа к пользователю нет, я полагаю. Информации не нашел, и своего решения тоже не смог придумать
.
Вопрос - возможно ли вообще получить информацию с сервера об устройствах пользователей django admin?
Если нет, то что я могу использовать вместо UUID, чтобы определить, какое устройство было использовано при внесении изменений в админ-панели django?
Заранее спасибо!
попробуйте использовать javascript на стороне вашего шаблона для отправки этой информации через