Flask实战第43天:把图片验证码和短信验证码保存到memcached中

前面我们已经获取到图片验证码和短信验证码,但是我们还没有把它们保存起来。同样的,我们和之前的邮箱验证码一样,保存到memcached中

编辑commom.vews.py

..
from utils import xcache

@bp.route('/graph_captcha/')
def graph_captcha():
    text, image = Captcha.gene_graph_captcha()
    out = BytesIO()
    image.save(out, 'png')
    out.seek(0)
    resp = make_response(out.read())
    resp.content_type = 'image/png'
    xcache.set(text.lower(), text.lower()) #图片验证码这里,不好设置一个唯一key,索性直接也用验证码的值作为key
                                           #都存入小写,到时候都通过小写对比,这样用户就不用区分大小写了
    return resp


@bp.route('/sms_captcha/', methods=['POST'])
def sms_captcha():
    sms_captcha_form = SmsCaptchaForm(request.form)
    if sms_captcha_form.validate():
        telephone = sms_captcha_form.telephone.data
        #生成随机的验证,之前图片那里有方法实现了,我们直接调用就行,生成6位的验证码
        radom_code = Captcha.gene_text(6)
        params = {'code': radom_code}
        if send_sms(telephone, json.dumps(params)):
            xcache.set(telephone, radom_code)   #把手机号码作为key
            return xjson.json_success('短信发送成功')
        else:
            return xjson.json_server_error('短信发送失败')
    else:
        return xjson.json_param_error('参数错误')

 

posted @ 2018-08-19 15:05  sellsa  阅读(712)  评论(0编辑  收藏  举报