|
@@ -35,7 +35,7 @@ def user_login(request):
|
|
|
# 登录
|
|
|
user = device.user
|
|
|
login(request, user)
|
|
|
- response = {'result': 'login successfully'}
|
|
|
+ response = {'result': 'login successfully', 'token': device.token}
|
|
|
return HttpResponse(json.dumps(response))
|
|
|
# return redirect("chat:index")
|
|
|
else:
|
|
@@ -43,22 +43,29 @@ def user_login(request):
|
|
|
return HttpResponse(json.dumps(response))
|
|
|
# 已过期的token并且已经被删除
|
|
|
except Devices.DoesNotExist:
|
|
|
- response = {'result': 'detected new device'}
|
|
|
+ response = {'result': 'detected new device, please login'}
|
|
|
return HttpResponse(json.dumps(response))
|
|
|
else:
|
|
|
# 检测账号密码是否匹配数据库中的一个用户
|
|
|
# 如果均匹配,则返回此User对象
|
|
|
user = authenticate(username=data['username'], password=data['password'])
|
|
|
if user:
|
|
|
- # 新建一个该user的设备
|
|
|
- device = Devices()
|
|
|
- device.user = user
|
|
|
- device.device_uid = generate_random_str(10)
|
|
|
- device.token = hash(
|
|
|
- device.device_uid + device.user.username + datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
|
|
|
- device.save()
|
|
|
+ if data['token'] == 'token':
|
|
|
+ # 新建一个该user的设备
|
|
|
+ device = create_new_device(user)
|
|
|
+ else:
|
|
|
+ # 此时,客户端带来了过期的旧token,现在需要更新旧的token
|
|
|
+ try:
|
|
|
+ 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.save()
|
|
|
+ except Devices.DoesNotExist:
|
|
|
+ # 新建一个该user的设备
|
|
|
+ device = create_new_device(user)
|
|
|
login(request, user)
|
|
|
- response = {'result': 'login successfully'}
|
|
|
+ response = {'result': 'login successfully', 'token': device.token}
|
|
|
return HttpResponse(json.dumps(response))
|
|
|
else:
|
|
|
response = {'result': 'wrong account or password'}
|
|
@@ -77,6 +84,17 @@ def user_login(request):
|
|
|
return HttpResponse(json.dumps(response))
|
|
|
|
|
|
|
|
|
+# 新建一个该user的设备
|
|
|
+def create_new_device(user):
|
|
|
+ device = Devices()
|
|
|
+ device.user = user
|
|
|
+ device.device_uid = generate_random_str(10)
|
|
|
+ device.token = hash(
|
|
|
+ device.device_uid + device.user.username + datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
|
|
|
+ device.save()
|
|
|
+ return device
|
|
|
+
|
|
|
+
|
|
|
def generate_random_str(random_length=16):
|
|
|
"""
|
|
|
生成一个指定长度的随机字符串
|
|
@@ -91,7 +109,8 @@ def generate_random_str(random_length=16):
|
|
|
|
|
|
def user_logout(request):
|
|
|
logout(request)
|
|
|
- return redirect("chat:index")
|
|
|
+ response = {'result', 'logout successfully'}
|
|
|
+ return HttpResponse(json.dumps(response))
|
|
|
|
|
|
|
|
|
def user_register(request):
|