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

  • 相关阅读:
    SQL Server 2005技术内幕:查询、调整和优化2——Bookmark Lookup
    隐藏文字用图片代替方案
    检索get参素
    a:hover之后ie6要恢复原来的状态需要hover的时候改变a的状态
    暂记
    台式机搭建wifi热点
    多行文本垂直居中
    chrome上做web app开发 模拟不同的分辨率和设备
    工厂模式和构造函数
    字符串替换
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11954593.html
Copyright © 2011-2022 走看看