فهرست منبع

修改了login逻辑,进行了merge

Shellmiao 4 سال پیش
والد
کامیت
927baa0109
5فایلهای تغییر یافته به همراه43 افزوده شده و 49 حذف شده
  1. 1 1
      .idea/MeChat.iml
  2. 1 1
      .idea/misc.xml
  3. 1 1
      MeChat/settings.py
  4. 40 46
      account/views.py
  5. BIN
      db.sqlite3

+ 1 - 1
.idea/MeChat.iml

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

+ 1 - 1
.idea/misc.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
   <component name="PyCharmProfessionalAdvertiser">
     <option name="shown" value="true" />
   </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!
 DEBUG = True
 
-ALLOWED_HOSTS = ['10.122.237.112']
+ALLOWED_HOSTS = ['10.122.237.112', '127.0.0.1']
 
 # Application definition
 

+ 40 - 46
account/views.py

@@ -19,57 +19,51 @@ DEBUG = True
 
 def user_login(request):
     if request.method == 'POST':
-        user_login_form = UserLoginForm(request.POST)
-        if user_login_form.is_valid():
-            # 清洗出合法的数据
-            data = user_login_form.cleaned_data
-            # 检测是否有登录凭证
-            if data['token'] != 'token':
-                try:
-                    device = Devices.objects.filter(token__exact=data['token']).get()
-                    sub_time = (device.last_login_time - datetime.date).total_seconds() / (3600 * 24)
-                    # 检查token是否过期
-
-                    if sub_time < expiration_date:
-                        # 更新此user此设备的token
-                        # token由设备uid、用户名、当前时间hash得来
-                        device.gen_token()
-                        device.save()
-                        # 登录
-                        user = device.user
-                        login(request, user)
-                        response = {'token': device.token}
-                        return HttpResponse(json.dumps(response), status=200)
-                        # return redirect("chat:index")
-                    else:
-                        return HttpResponse(status=420)
-                # 已过期的token并且已经被删除
-                except Devices.DoesNotExist:
-                    return HttpResponse(status=420)
-            else:
-                # 检测账号密码是否匹配数据库中的一个用户
-                # 如果均匹配,则返回此User对象
-                user = authenticate(username=data['username'], password=data['password'])
-                if user:
-                    if data['token'] == 'token':
-                        # 新建一个该user的设备
-                        device = create_new_device(user)
-                    else:
-                        # 此时,客户端带来了过期的旧token,现在需要更新旧的token
-                        try:
-                            device = Devices.objects.filter(token__exact=data['token']).get()
-                            device.gen_token()
-                            device.save()
-                        except Devices.DoesNotExist:
-                            # 新建一个该user的设备
-                            device = create_new_device(user)
+        data = request.POST
+        # 检测是否有登录凭证
+        if data['token'] != 'token':
+            try:
+                device = Devices.objects.filter(token__exact=data['token']).get()
+                sub_time = (device.last_login_time - datetime.date.today()).total_seconds() / (3600 * 24)
+                # 检查token是否过期
+                if sub_time < expiration_date:
+                    # 更新此user此设备的token
+                    # token由设备uid、用户名、当前时间hash得来
+                    device.gen_token()
+                    device.save()
+                    # 登录
+                    user = device.user
                     login(request, user)
                     response = {'token': device.token}
                     return HttpResponse(json.dumps(response), status=200)
+                    # return redirect("chat:index")
                 else:
-                    return HttpResponse(status=401)
+                    return HttpResponse(status=420)
+            # 已过期的token并且已经被删除
+            except Devices.DoesNotExist:
+                return HttpResponse(status=420)
         else:
-            return HttpResponse(status=400)
+            # 检测账号密码是否匹配数据库中的一个用户
+            # 如果均匹配,则返回此User对象
+            user = authenticate(username=data['username'], password=data['password'])
+            if user:
+                if data['token'] == 'token':
+                    # 新建一个该user的设备
+                    device = create_new_device(user)
+                else:
+                    # 此时,客户端带来了过期的旧token,现在需要更新旧的token
+                    try:
+                        device = Devices.objects.filter(token__exact=data['token']).get()
+                        device.gen_token()
+                        device.save()
+                    except Devices.DoesNotExist:
+                        # 新建一个该user的设备
+                        device = create_new_device(user)
+                login(request, user)
+                response = {'token': device.token}
+                return HttpResponse(json.dumps(response), status=200)
+            else:
+                return HttpResponse(status=401)
     # 用于测试,登录界面
     elif request.method == 'GET':
         if DEBUG:

BIN
db.sqlite3