当前位置:  开发笔记 > 后端 > 正文

如何在django中获取最后一次登录ip并保存到GenericIPAddressField?

如何解决《如何在django中获取最后一次登录ip并保存到GenericIPAddressField?》经验,为你挑选了1个好方法。

我正在扩展用户配置文件并添加了一个last_ip字段,如下所示.每当用户登录其当前IP时,如何更新此字段?如果重要,我正在使用allauth.

class UserProfile(models.Model):  
    user = models.OneToOneField(User)
    last_ip = models.GenericIPAddressField(protocol='IPv4', verbose_name="Last Login IP")
    location = models.CharField(max_length=50, blank=True)

Tiny Instanc.. 7

要实际获取用户IP地址,您可以使用django-ipware.还有其他方法,但这个应用程序似乎尽可能覆盖,您可以查看此问题的详细信息.

拥有USER_IP后,您可以创建中间件并last_ip为每个请求更新

# middleware.py
class LastLoginIP(object):
     def process_request(self, request):
         if request.user.is_authenticated():
            UserProfile.objects\
            .filter(user=request.user)\
            .update(last_ip=USER_IP)

# settings.py add the middleware
MIDDLEWARE_CLASSES = (
  ....
  your.middleware.LastLoginIP
)

或者,如果您已经设置了一个系统,每个配置文件只允许一次并发登录(每次用户切换设备时,他/她必须再次登录),那么您可以last_ip在登录期间更新.



1> Tiny Instanc..:

要实际获取用户IP地址,您可以使用django-ipware.还有其他方法,但这个应用程序似乎尽可能覆盖,您可以查看此问题的详细信息.

拥有USER_IP后,您可以创建中间件并last_ip为每个请求更新

# middleware.py
class LastLoginIP(object):
     def process_request(self, request):
         if request.user.is_authenticated():
            UserProfile.objects\
            .filter(user=request.user)\
            .update(last_ip=USER_IP)

# settings.py add the middleware
MIDDLEWARE_CLASSES = (
  ....
  your.middleware.LastLoginIP
)

或者,如果您已经设置了一个系统,每个配置文件只允许一次并发登录(每次用户切换设备时,他/她必须再次登录),那么您可以last_ip在登录期间更新.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有