二、 登录
1. 用户名和密码
用户名和密码的格式验证可以不需要在后端进行,在前端服务器判断就可以
2. 图片验证码与验证
import string,redis
from captcha.image import ImageCaptcha
class Imgcode(APIView):
def get(self,request,uuid):
code= ''.join(random.sample(string.ascii_letters + string.digits, 4))
print(code)
cap = ImageCaptcha()
img_code = cap.generate(code)
r= redis.Redis(host='localhost',port=6379,db=0)
r.set(uuid,code,ex=120)
r.close()
return HttpResponse(img_code,content_type='image/png')
class Imgcode2(APIView):
def get(self,request):
uuid = request.query_params.get('imageCodeID')
img_code = request.query_params.get('imageCode')
r = redis.Redis(host='localhost', port=6379, db=0)
r_code = r.get(uuid)
if not r_code:
return Response({'code': 204,'msg': '验证码过期'})
print(img_code)
print(r_code)
if img_code.lower() == r_code.decode().lower():
return Response({'code': 200,'msg': '完成'})
else:
return Response({'code': 404, 'msg': '验证码错误'})
3. 登录
class Login(APIView):
def post(self,request):
username = request.data.get('username')
pwd= request.data.get('password')
try:
user= User.objects.get(username=username)
except Exception as e:
print(e)
return Response({'code': 404, 'msg': '用户不存在'})
if not user.check_password(pwd):
return Response({'code': 204, 'msg': '账号或密码错误'})
token= login_jwt_token(user)
return Response({
'code': 200,
'msg': '欢迎用户%s登录'% user.username,
'token': token,
'user':{
'userName': user.username,
'uid': user.id
}
})
4. 总结
无