CMS_Django_Backend/apps/auth/views.py
jayhgq 7bf39c83bd 1.优化Base64算法,增加异常捕获
2.调整auth所有接口为base64加密存储
3.修复无法获取token的问题
2024-09-16 00:08:13 +08:00

93 lines
3.1 KiB
Python

import binascii
import json, datetime
from django.shortcuts import HttpResponse
from django.middleware.csrf import get_token
from django.views.decorators.http import require_GET, require_POST
from apps.auth import models as auth_models
from django.contrib.auth.hashers import make_password, check_password
from apps.api.common import CaesarCypherClass, Base64CypherClass
# Create your views here.
base64 = Base64CypherClass()
@require_GET
def gettoken(request):
"""
获取token
:param request:
:return:
"""
token = get_token(request)
return HttpResponse(json.dumps({'token': token}), content_type="application/json,charset=utf-8")
@require_POST
def search_user(request):
"""
查询用户名
:param request:
:return:
"""
username = base64.base64_encode_str(base64, request.POST.get("username")).decode('utf-8')
user = auth_models.User.objects.filter(username=username)
if user.exists():
return HttpResponse(True)
else:
return HttpResponse(False)
@require_POST
def add_user(request):
"""
用户注册
:param request: POST提交注册信息
:return: 注册结果
"""
try:
username = base64.base64_encode_str(base64, request.POST.get("username")).decode('utf-8')
pwd_base64 = base64.base64_decode_str(base64, request.POST.get("pwd"))
print(username, pwd_base64)
pwd = make_password(pwd_base64)
email = base64.base64_encode_str(base64, request.POST.get("email")).decode('utf-8')
phone = base64.base64_encode_str(base64, request.POST.get("phone")).decode('utf-8')
create_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
last_login_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(username, pwd, email, phone)
avatar = request.FILES.get("avatar")
auth_models.User.objects.create(
username=username,
pwd=pwd,
email=email,
phone=phone,
create_time=create_time,
last_login_time=last_login_time,
avatar=avatar
)
return HttpResponse("添加用户成功")
except Exception as e:
return HttpResponse(f"报错了:{e}")
@require_POST
def login_user(request):
"""
用户登录,验证用户密码是否正确,正确返回菜单,错误返回用户名或密码不正确
:param request:
:return:
"""
try:
username = base64.base64_encode_str(base64, request.POST.get("username")).decode('utf-8')
pwd_input = base64.base64_decode_str(base64, request.POST.get("pwd"))
pwd_made = auth_models.User.objects.filter(username=username).first().pwd
pwd = check_password(pwd_input, pwd_made)
if pwd:
return HttpResponse(True)
else:
return HttpResponse("用户名或密码不正确")
except binascii.Error as e:
return HttpResponse("base64解码失败")
except Exception as e:
return HttpResponse(f"报错了:{e}")