如何在django网站上跟踪管理员/员工的登录位置

时间:2013-12-30 12:08:58

标签: python django

我有一个django网站,

1.我需要创建一些员工用户来登录和访问/查看模型。

2.但同时我想跟踪员工甚至管理员的登录位置。

3.我有任何适当的django模块或第三方API来执行此操作。

1 个答案:

答案 0 :(得分:1)

您可以使用一些中间件和GIS contrib app来执行此操作,该应用程序为geoip lookups提供了包装。

创建一个简单的表来记录您的额外细节,然后使用以下内容:

from django.contrib.gis.utils import GeoIP
from logger.models import Log # your simple Log model

def get_ip(request):
   xff = request.META.get('HTTP_X_FORWARDED_FOR')
   if xff:
      return xff.split(',')[0]
   return request.META.get('REMOTE_ADDR')

class UserLocationLoggerMiddleware(object):

    def process_request(self, request):
        if request.user and request.user.is_superuser:
            # Only log requests for superusers,
            # you can control this by adding a setting
            # to track other user types
            ip = get_ip(request)
            g = GeoIP()
            lat,long = g.lat_lon(ip)
            Log.objects.create(request.user, ip, lat, long)

请参阅middleware documentation,了解如何设置和配置自定义中间件。