zoukankan      html  css  js  c++  java
  • 一百一十九:CMS系统之将短信验证码和图形验证码放到memcached缓存中

    将两个验证码的视图都放到common蓝图下

    from flask import Blueprint, request, make_response
    from exts import alidayu
    from utils import restful
    from utils.captcha import Captcha
    from .forms import SMSCaptchaForm
    from utils import cmscache
    from io import BytesIO

    bp = Blueprint("common", __name__, url_prefix='/common')


    @bp.route('/captcha/')
    def graph_captcha():
    """ 获取验证码 """
    text, image = Captcha.gene_graph_captcha()
    cmscache.set(text.lower(), text.lower()) # key和value都是验证码,存到memcached中
    out = BytesIO() # 二进制流
    image.save(out, 'png')
    out.seek(0)
    resp = make_response(out.read()) # 二进制流读取出来放到响应对象中
    resp.content_type = 'image/png'
    return resp


    @bp.route('/sms_captcha/', methods=['POST'])
    def sms_captcha():
    """ 短信验证码 """
    form = SMSCaptchaForm(request.form)
    if form.validate():
    telephone = form.telephone.data
    captcha = Captcha.gene_text(number=4)
    if alidayu.send_sms(telephone, code=captcha):
    cmscache.set(telephone, captcha) # 把验证码存到memcached中,telephone:captcha
    return restful.success()
    else:
    # return restful.params_error('验证码发送失败')
    cmscache.set(telephone, captcha) # 把验证码存到memcached中,telephone:captcha
    return restful.success(captcha) # 由于没有触发发送验证码,这里只要手机号验证通过统一返回验证码
    else:
    return restful.params_error('参数错误')

    将模板的图形验证码的地址换为commo.graph_captcha

  • 相关阅读:
    gulp备忘
    好文收藏
    妙味H5交互篇备忘
    [CSS3备忘] transform animation 等
    css选择器总结
    flexbox备忘
    函数
    继承2
    在 Swift 中实现单例方法
    浅谈 Swift 中的 Optionals
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11954593.html
Copyright © 2011-2022 走看看