|
@@ -19,57 +19,51 @@ DEBUG = True
|
|
|
|
|
|
|
|
def user_login(request):
|
|
def user_login(request):
|
|
|
if request.method == 'POST':
|
|
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)
|
|
login(request, user)
|
|
|
response = {'token': device.token}
|
|
response = {'token': device.token}
|
|
|
return HttpResponse(json.dumps(response), status=200)
|
|
return HttpResponse(json.dumps(response), status=200)
|
|
|
|
|
+ # return redirect("chat:index")
|
|
|
else:
|
|
else:
|
|
|
- return HttpResponse(status=401)
|
|
|
|
|
|
|
+ return HttpResponse(status=420)
|
|
|
|
|
+ # 已过期的token并且已经被删除
|
|
|
|
|
+ except Devices.DoesNotExist:
|
|
|
|
|
+ return HttpResponse(status=420)
|
|
|
else:
|
|
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':
|
|
elif request.method == 'GET':
|
|
|
if DEBUG:
|
|
if DEBUG:
|