Change ip_addr to get_client_ip

Brightcells 8 ans auparavant
Parent
Commettre
0ab056c3fd
3 fichiers modifiés avec 13 ajouts et 8 suppressions
  1. 4 4
      account/views.py
  2. 2 2
      photo/views.py
  3. 7 2
      utils/ip_utils.py

+ 4 - 4
account/views.py

@@ -13,7 +13,7 @@ from account.serializers import GroupSerializer, LensmanInfoSerializer, UserInfo
13 13
 from operation.models import GuestEntranceControlInfo
14 14
 from utils.error.errno_utils import LensmanStatusCode, UserStatusCode
15 15
 from utils.error.response_utils import response
16
-from utils.ip_utils import ip_addr
16
+from utils.ip_utils import get_client_ip
17 17
 from utils.redis.rguest import get_guest_entrance_control
18 18
 from utils.redis.rprofile import set_profile_info
19 19
 from utils.version_utils import is_version_match
@@ -56,7 +56,7 @@ def user_signup_api(request):
56 56
         return response(UserStatusCode.USERNAME_HAS_REGISTERED)
57 57
 
58 58
     # 判断 user_id 是否存在并且为分配用户,如果存在并且为分配用户,则直接在该帐户上更新,否则则直接创建帐户
59
-    signup_ip, signup_at = ip_addr(request), tc.utc_datetime()
59
+    signup_ip, signup_at = get_client_ip(request), tc.utc_datetime()
60 60
 
61 61
     try:
62 62
         user = UserInfo.objects.select_for_update().get(user_id=user_id)
@@ -96,7 +96,7 @@ def user_login_api(request):
96 96
     except UserInfo.DoesNotExist:
97 97
         return response(UserStatusCode.USER_NOT_FOUND)
98 98
 
99
-    login_ip, login_at = ip_addr(request), tc.utc_datetime()
99
+    login_ip, login_at = get_client_ip(request), tc.utc_datetime()
100 100
 
101 101
     if not check_password(password, user.password):
102 102
         UserLoginLogInfo.objects.create(
@@ -156,7 +156,7 @@ def user_wx_authorize_api(request):
156 156
     # unionid 不存在
157 157
     # 判断 user_id 是否存在并且为分配用户,如果存在并且为分配用户,则直接在该帐户上更新,否则则直接创建帐户
158 158
 
159
-    signup_ip, signup_at = ip_addr(request), tc.utc_datetime()
159
+    signup_ip, signup_at = get_client_ip(request), tc.utc_datetime()
160 160
 
161 161
     try:
162 162
         user = UserInfo.objects.select_for_update().get(user_id=user_id)

+ 2 - 2
photo/views.py

@@ -18,7 +18,7 @@ from photo.models import PhotosInfo
18 18
 from photo.serializers import PhotosInfoSerializer
19 19
 from utils.error.errno_utils import LensmanStatusCode, PhotoStatusCode
20 20
 from utils.error.response_utils import response
21
-from utils.ip_utils import ip_addr
21
+from utils.ip_utils import get_client_ip
22 22
 from utils.redis.rgroup import get_group_info, set_group_info, set_group_users_info
23 23
 from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_DELETED_SET, GROUP_USERS_PASSED_SET,
24 24
                                GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET, UUID_LIST)
@@ -125,7 +125,7 @@ def session_join_api(request):
125 125
     user, user_created = UserInfo.objects.get_or_create(user_id=user_id, defaults={
126 126
         'user_id': CurtailUUID.uuid(UserInfo, 'user_id'),
127 127
         'user_status': UserInfo.ASSIGN,
128
-        'assign_ip': ip_addr(request),
128
+        'assign_ip': get_client_ip(request),
129 129
         'assign_at': tc.utc_datetime(),
130 130
     })
131 131
     user_id = user.user_id

+ 7 - 2
utils/ip_utils.py

@@ -1,5 +1,10 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 
3 3
 
4
-def ip_addr(request):
5
-    return request.META['HTTP_X_FORWARDED_FOR'] if 'HTTP_X_FORWARDED_FOR' in request.META else request.META['REMOTE_ADDR']
4
+def get_client_ip(request):
5
+    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
6
+    if x_forwarded_for:
7
+        ip = x_forwarded_for.split(',')[0]
8
+    else:
9
+        ip = request.META.get('REMOTE_ADDR')
10
+    return ip