Răsfoiți Sursa

用户扫码登录

peng 2 ani în urmă
părinte
comite
7a8b82ee00
3 a modificat fișierele cu 45 adăugiri și 11 ștergeri
  1. 35 11
      Controller/AWS/KVSController.py
  2. 8 0
      Object/RedisObject.py
  3. 2 0
      Object/ResponseObject.py

+ 35 - 11
Controller/AWS/KVSController.py

@@ -4,16 +4,18 @@
 @Time : 2022/10/18 9:48
 @File :KVSController.py
 """
+import hashlib
 import time
-
+import uuid
 from django.views import View
 
 from Model.models import KVS
 from Object.AWS.AmazonKVSUtil import AmazonKVSObject
 from Object.AWS.AmazonKVAMUtil import AmazonKVAMObject
 from Object.AWS.AmazonKinesisVideoUtil import AmazonKinesisVideoObject
+from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
-from Ansjer.config import ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME
+from Ansjer.config import ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME, SERVER_DOMAIN
 
 
 class UserRelatedView(View):
@@ -43,14 +45,19 @@ class UserRelatedView(View):
         """
         网页生成二维码
         @param request_dict: 请求参数
-        @request_dict serial_number: 序列号
         @param response: 响应对象
         @return: response
         """
-        serial_number = request_dict.get('serial_number', None)
-
+        nwo_time = time.time()
+        redis_obj = RedisObject()
         try:
-            return response.json(0)
+            uuid_number = hashlib.md5((str(uuid.uuid1()) + str(nwo_time)).encode('utf-8')).hexdigest()
+            flag = redis_obj.set_ex_data(uuid_number, 0, 3000)
+            res = {'type': 'autologin', 'id': uuid_number}
+            if flag:
+                return response.json(0, res)
+            else:
+                return response.json(119)
         except Exception as e:
             print(e)
             return response.json(500)
@@ -64,10 +71,18 @@ class UserRelatedView(View):
         @param response: 响应对象
         @return: response
         """
-        serial_number = request_dict.get('serial_number', None)
-
+        uuid_number = request_dict.get('uuid', None)
+        if not uuid_number:
+            return response.json(444, {'error param': 'uuid'})
         try:
-            return response.json(0)
+            redis_obj = RedisObject()
+            status = redis_obj.get_data(uuid_number)
+            if status == 0:
+                return response.json(18)
+            elif status is False:
+                return response.json(119)
+            redis_obj.del_data(uuid_number)
+            return response.json(0, {'token': status})
         except Exception as e:
             print(e)
             return response.json(500)
@@ -81,9 +96,18 @@ class UserRelatedView(View):
         @param response: 响应对象
         @return: response
         """
-        serial_number = request_dict.get('serial_number', None)
-
+        uuid_number = request_dict.get('uuid', None)
+        token = request_dict.get('token', None)
+        if not all([uuid_number, token]):
+            return response.json(444, {'error param': 'uuid or token'})
+        redis_obj = RedisObject()
         try:
+            status = redis_obj.get_data(uuid_number)
+            if status is False:
+                return response.json(119)
+            flag = redis_obj.set_ex_data(uuid_number, token)
+            if flag is False:
+                return response.json(309)
             return response.json(0)
         except Exception as e:
             print(e)

+ 8 - 0
Object/RedisObject.py

@@ -98,3 +98,11 @@ class RedisObject:
             return keys
         else:
             return False
+
+    def set_ex_data(self, key, val, expire=0):
+        try:
+            self.CONN.setex(key, val, expire)
+        except Exception as e:
+            return False
+        else:
+            return True

+ 2 - 0
Object/ResponseObject.py

@@ -21,6 +21,7 @@ class ResponseObject(object):
             15: 'Device has been bound',
             16: 'WeChat has been bound, please log in and unbind using WeChat',
             17: 'No email or mobile phone login',
+            18: 'User not logged in',
             44: 'System error! Can not send email',
             48: 'System object error!',
             89: 'Already send the code, please check it or get it again after 10m',
@@ -131,6 +132,7 @@ class ResponseObject(object):
             15: '设备已被绑定',
             16: '微信已被绑定,请使用微信登录并解绑',
             17: '未绑定邮箱或者手机登录方式',
+            18: '用户未登录',
             44: '系统错误!无法发送电子邮件',
             48: '系统对象错误',
             89: '已发验证码,请检测或10分钟后重新获取。',