# 获取验证码
def yanzm(req):
# 设置背景色
bg_color = (100, 100, 255)
# 设置画布长宽(像素)
width = 400
height = 100
# 通过设置生成新的画布
im = Image.new('RGB', (width, height), bg_color)
# 展示画布
draw = ImageDraw.Draw(im)
# 验证码文本
# string = 'MSBC'
string = ['','','','']
# 随机选取4个值作为验证码
rand_str = '0123456789'
fangf='+-*'
# for i in range(0, 4):
string[0] = rand_str[random.randrange(0, len(rand_str))]
string[1] = random.choice(fangf)
string[2] = rand_str[random.randrange(0, len(rand_str))]
string[3] = '='
answer = str(eval(string[0]+string[1]+string[2]))
font = ImageFont.truetype('D:\\huikeproject\\web-huike\\webHuike\\static\\arialuni.ttf',70)
# 构造字体颜色
fontcolor = (255, 100, 100)
# 绘制4个字
draw.text((random.randint(10, 30), (random.randint(0, 10))), string[0], font=font, fill=fontcolor)
draw.text((random.randint(90, 130), (random.randint(0, 10))), string[1], font=font, fill=fontcolor)
draw.text((random.randint(180, 230), (random.randint(0, 10))), string[2], font=font, fill=fontcolor)
draw.text((random.randint(270, 330), (random.randint(0, 10))), string[3], font=font, fill=fontcolor)
# 使用point函数绘制噪点
for i in range(0, 1000):
xy = (random.randrange(0, width), random.randrange(0, height))
fill = (random.randrange(0, 255), 255, random.randrange(0, 255))
draw.point(xy, fill=fill)
# 释放画笔
del draw
im.save('D:\huikeproject\web-huike\webHuike\static\yanz.png', 'png')
encoded = base64.b64encode(open('D:\huikeproject\web-huike\webHuike\static\yanz.png', 'rb').read())
basema=encoded.decode()
# im.show()
req.session['yan']=answer
# print('生成的验证码答案:')
# print(req.session.get('yan'))
return JsonResponse({"data":200,'base':basema})
# 登录
def login(req):
b = json.loads(req.body)
sessions=Session.objects.all()
answerlist=[]
for i in sessions:
answerlist.append(i.get_decoded()['yan'])
answer=answerlist[-1]
user = CustomerModel.objects.filter(nickname=b['username'], password=b['password']).values()
if user and b['yz']==answer:
encoded_jwt = jwt.encode({'nickname': b['username'],"password":b['password']}, 'secret', algorithm='HS256')
return JsonResponse({"status": 200, "data": "登录成功","token":encoded_jwt,'user':list(user)})
elif user and b['yz']!=answer:
return JsonResponse({"status": 401, "data": "登录失败,验证码错误"})
return JsonResponse({"status": 400, "data": "登录失败,用户不存在"})
python实现图片验证码
最新推荐文章于 2024-07-08 15:41:40 发布