from django_redis import get_redis_connection
from django.shortcuts import render
from django.http import JsonResponse, HttpRequest
from .models import User
import base64
import os
# Create your views here.
def index(request):
return JsonResponse({
'msg': 'ok'
})
# 注册
def register(request):
if request.method == "POST":
data = request.POST
try:
res = User.objects.filter(username=data['username'])
if len(res) > 0:
return JsonResponse({
'msg': '用户名已存在',
})
cres = User.objects.create(
username=data['username'], password=data['password'])
if cres:
return JsonResponse({
'msg': '注册成功',
})
return JsonResponse({
'msg': '注册请求失败'
})
except:
return JsonResponse({
'msg': '请求失败'
})
return JsonResponse({
'msg': '一个不告诉你错误的错误'
})
# 登录
def login(request):
if request.method == "POST":
data = request.POST
res = User.objects.filter(
username=data['username'], password=data['password'])
if len(res) > 0:
token = base64.b32encode(os.urandom(20))
try:
request.session
conn = get_redis_connection('boku')
conn.set(data['username'], token)
except:
return JsonResponse({
'msg': '这个错误很大,请通知管理员进行修复',
})
val = conn.get(data['username'])
return JsonResponse({
'code': 200,
'msg': '登录成功',
'username': data['username'],
'token': val.decode()
})
else:
return JsonResponse({
'msg': '用户名不存在或密码错误',
})
return JsonResponse({
'msg': '一个不告诉你错误的错误'
})
def add(request):
if request.method == "POST":
# 获取POST数据
data = request.POST
# 连不上或者没有 POST数据中没有username数据或者拿不到TOKEN抛出错误
try:
conn = get_redis_connection('default')
val = conn.get(data['username'])
token = data['token']
except:
return JsonResponse({
'msg': '请求失败'
})
if val is None:
return JsonResponse({
'msg': '没有权限'
})
# 传你过来的token与 redis 中保存的 token 对比 不对就抛出错误
if val.decode() != token:
return JsonResponse({
'code': 985,
'msg': '身份失效了呢'
})
return JsonResponse({
'msg': '通过认证'
})
return JsonResponse({
'msg': '一个不告诉你错误的错误'
})
def auth(request):
if request.method == "POST":
data = request.POST
try:
token = data['token']
if len(token) != 32:
return JsonResponse({
'code': 404
})
conn = get_redis_connection('default')
val = conn.get(data['username'])
except:
return JsonResponse({
'msg': '请求失败'
})
if val is None:
return JsonResponse({
'msg': '没有权限'
})
if val.decode() != token:
return JsonResponse({
'code': 985,
'msg': '身份失效了呢'
})
return JsonResponse({
'code': 200,
'msg': '通过认证'
})
return JsonResponse({
'msg': '一个不告诉你错误的错误'
})
def demo(request):
data = request.POST['username']
token = base64.b32encode(os.urandom(20))
request.session[data] = token.decode()
val = request.session.get(data, default=None)
return JsonResponse({'token': val})
def demo1(request):
data = request.POST
val = request.session.get(data['username'], default=None)
if(data['token'] == val):
return JsonResponse({
'token': val,
'msg': 'ok'
})
return JsonResponse({
'code':500,
})
评论0