Browse Source

token记录

peng 11 tháng trước cách đây
mục cha
commit
13bf9e0fdb
1 tập tin đã thay đổi với 26 bổ sung2 xóa
  1. 26 2
      Object/TokenObject.py

+ 26 - 2
Object/TokenObject.py

@@ -3,6 +3,8 @@ import datetime
 import jwt
 import time
 import requests
+
+from Model.models import TokenRecord
 from Object.RedisObject import RedisObject
 from Ansjer.config import OAUTH_ACCESS_TOKEN_SECRET, OAUTH_REFRESH_TOKEN_SECRET, OAUTH_ACCESS_TOKEN_TIME, \
     OAUTH_REFRESH_TOKEN_TIME, CONFIG_INFO, CONFIG_TEST, CONFIG_CN, DETECT_PUSH_DOMAINS, LOGGER
@@ -44,13 +46,16 @@ class TokenObject:
 
         except jwt.ExpiredSignatureError as e:
             self.code = 309
+            self.update_token(repr(e))
             return
         except Exception as e:
             self.code = 309
+            self.update_token(repr(e))
             return
         else:
             if not self.userID:
                 self.code = 309
+                self.update_token('缺少用户ID')
                 return
             else:
                 if self.userID:
@@ -64,6 +69,7 @@ class TokenObject:
                             return res
                         if self.token != redis_token:
                             self.code = 310
+                            self.update_token('重复登录')
                             return
                     self.code = 0
                     return res
@@ -71,7 +77,7 @@ class TokenObject:
                     self.code = 309
                     return
 
-    def generate(self, data=None):
+    def generate(self, old_refresh_token=None, data=None):
         if data is None:
             data = {}
         try:
@@ -122,8 +128,20 @@ class TokenObject:
                     result = requests.post(push_url, data={'push_token': data['tokenVal'], 'user_id': data['userID'],
                                                            'app_bundle_id': app_bundle_id})
                     LOGGER.info('{}登出推送结果:{}'.format(data['userID'], result.json()))
+            now_time = int(time.time())
+            if old_refresh_token:
+                token_qs = TokenRecord.objects.filter(refresh_token=old_refresh_token)
+                if token_qs.exists():
+                    token_qs.update(refresh_token=refresh_token, access_token=access_token, update_time=now_time)
+                else:
+                    TokenRecord.objects.create(access_token=access_token, refresh_token=refresh_token, data=data,
+                                               created_time=now_time, updated_time=now_time)
+            else:
+                TokenRecord.objects.create(access_token=access_token, refresh_token=refresh_token, data=data,
+                                           created_time=now_time, updated_time=now_time)
         except Exception as e:
             self.code = 309
+            self.update_token(repr(e))
             print(repr(e))
         else:
             self.code = 0
@@ -162,12 +180,18 @@ class TokenObject:
             print('过期')
             print(repr(e))
             self.code = 309
+            self.update_token(repr(e))
         except Exception as e:
             self.code = 309
+            self.update_token(repr(e))
             print(repr(e))
         else:
             self.userID = res.get('userID', None)
             self.user = res.get('user', '')
             self.lang = res.get('lang', None)
-            refreshRes = self.generate(data=res)
+            refreshRes = self.generate(self.token, data=res)
             return refreshRes
+
+    def update_token(self, e):
+        TokenRecord.objects.filter(access_token=self.token).update(code=self.code, error_info=e,
+                                                                   updated_time=int(time.time()))