Browse Source

sha1 gen token

ignalxy 4 years ago
parent
commit
36b52e73d7
6 changed files with 18 additions and 11 deletions
  1. 4 2
      .idea/MeChat.iml
  2. 1 1
      .idea/misc.xml
  3. 1 1
      MeChat/settings.py
  4. 9 0
      account/models.py
  5. 3 7
      account/views.py
  6. BIN
      db.sqlite3

+ 4 - 2
.idea/MeChat.iml

@@ -13,8 +13,10 @@
     </facet>
     </facet>
   </component>
   </component>
   <component name="NewModuleRootManager">
   <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$" />
-    <orderEntry type="jdk" jdkName="Python 3.8" jdkType="Python SDK" />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/venv" />
+    </content>
+    <orderEntry type="jdk" jdkName="Python 3.9" jdkType="Python SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
   </component>
   <component name="TemplatesService">
   <component name="TemplatesService">

+ 1 - 1
.idea/misc.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
   <component name="PyCharmProfessionalAdvertiser">
   <component name="PyCharmProfessionalAdvertiser">
     <option name="shown" value="true" />
     <option name="shown" value="true" />
   </component>
   </component>

+ 1 - 1
MeChat/settings.py

@@ -24,7 +24,7 @@ SECRET_KEY = 'r!s)05+7&3kdwkm+&symsmf013o7jfxb%%^2-2zl^^z%_sqeln'
 # SECURITY WARNING: don't run with debug turned on in production!
 # SECURITY WARNING: don't run with debug turned on in production!
 DEBUG = True
 DEBUG = True
 
 
-ALLOWED_HOSTS = []
+ALLOWED_HOSTS = ['10.122.237.112']
 
 
 # Application definition
 # Application definition
 
 

+ 9 - 0
account/models.py

@@ -1,3 +1,6 @@
+import hashlib
+import datetime
+
 from django.db import models
 from django.db import models
 from django.contrib.auth.models import User
 from django.contrib.auth.models import User
 # 引入内置信号
 # 引入内置信号
@@ -32,6 +35,12 @@ class Devices(models.Model):
     # 登录凭证
     # 登录凭证
     token = models.CharField(max_length=100, default='233', blank=False, unique=True)
     token = models.CharField(max_length=100, default='233', blank=False, unique=True)
 
 
+    def gen_token(self):
+        _token = self.device_uid + self.user.username + datetime.datetime.now().strftime("%Y%m%d%H%M%S")
+        sha1 = hashlib.sha1()
+        sha1.update(_token.encode())
+        self.token = sha1.hexdigest()
+
 
 
 # 信号接收函数,每当新建User实例的时候自动调用
 # 信号接收函数,每当新建User实例的时候自动调用
 @receiver(post_save, sender=User)
 @receiver(post_save, sender=User)

+ 3 - 7
account/views.py

@@ -33,8 +33,7 @@ def user_login(request):
                     if sub_time < expiration_date:
                     if sub_time < expiration_date:
                         # 更新此user此设备的token
                         # 更新此user此设备的token
                         # token由设备uid、用户名、当前时间hash得来
                         # token由设备uid、用户名、当前时间hash得来
-                        device.token = hash(
-                            device.device_uid + device.user.username + datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
+                        device.gen_token()
                         device.save()
                         device.save()
                         # 登录
                         # 登录
                         user = device.user
                         user = device.user
@@ -59,9 +58,7 @@ def user_login(request):
                         # 此时,客户端带来了过期的旧token,现在需要更新旧的token
                         # 此时,客户端带来了过期的旧token,现在需要更新旧的token
                         try:
                         try:
                             device = Devices.objects.filter(token__exact=data['token']).get()
                             device = Devices.objects.filter(token__exact=data['token']).get()
-                            device.token = hash(
-                                device.device_uid + device.user.username + datetime.datetime.now().strftime(
-                                    "%Y%m%d%H%M%S"))
+                            device.gen_token()
                             device.save()
                             device.save()
                         except Devices.DoesNotExist:
                         except Devices.DoesNotExist:
                             # 新建一个该user的设备
                             # 新建一个该user的设备
@@ -89,8 +86,7 @@ def create_new_device(user):
     device = Devices()
     device = Devices()
     device.user = user
     device.user = user
     device.device_uid = generate_random_str(100)
     device.device_uid = generate_random_str(100)
-    device.token = hash(
-        device.device_uid + device.user.username + datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
+    device.gen_token()
     device.save()
     device.save()
     return device
     return device
 
 

BIN
db.sqlite3