商城登录后端

二、 登录

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. 总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值