44 lines
1.0 KiB
Python
44 lines
1.0 KiB
Python
from captcha.image import ImageCaptcha
|
|
from io import BytesIO
|
|
from PIL import Image
|
|
from random import choices
|
|
|
|
from flask import session, make_response
|
|
from flask_login import current_user
|
|
|
|
|
|
def gen_captcha(content='0123456789'):
|
|
""" 生成验证码 """
|
|
image = ImageCaptcha()
|
|
# 获取字符串
|
|
captcha_text = "".join(choices(content, k=4))
|
|
# 生成图像
|
|
captcha_image = Image.open(image.generate(captcha_text))
|
|
return captcha_text, captcha_image
|
|
|
|
|
|
# 生成验证码
|
|
def get_captcha_image():
|
|
code, image = gen_captcha()
|
|
out = BytesIO()
|
|
session["code"] = code
|
|
image.save(out, 'png')
|
|
out.seek(0)
|
|
resp = make_response(out.read())
|
|
resp.content_type = 'image/png'
|
|
return resp, code
|
|
|
|
|
|
# 授权路由存入session
|
|
def add_auth_session():
|
|
role = current_user.role
|
|
user_power = []
|
|
for i in role:
|
|
if i.enable == 0:
|
|
continue
|
|
for p in i.power:
|
|
if p.enable == 0:
|
|
continue
|
|
user_power.append(p.code)
|
|
session['permissions'] = user_power
|