Example #1
0
 def get(self):
     """获取验证码"""
     cookies = self.get_secure_cookie("captcha_id")
     if cookies:
         captcha = Captcha(json.loads(cookies))      # 创建生成验证码对象
     else:
         captcha = Captcha()
     dict_data = yield captcha.get_captcha()         # 获取验证码返回值
                                                     # 设置cookie 验证码校验值
     self.set_secure_cookie("captcha_id",json.dumps(dict_data["cookies"],ensure_ascii=False).encode("utf-8"))
     self.write({"errcode":"0","errmsg":"验证码获取成功","data":dict_data["data"]})                   # 返回图片数据
Example #2
0
def GetCaptcha():
    text, image = Captcha().gen_graph_captcha()
    out = BytesIO()
    image.save(out, 'png')
    out.seek(0)
    resp = make_response(out.read())
    resp.content_type = 'image/png'
    # 存入session
    session['Captcha'] = text
    return resp
Example #3
0
 def post(self):
     """校验登录"""
     try:                                            # 获取用户传递参数
         user_number = self.json_args["mobile"]      # 账号
         user_pwd = self.json_args["password"]       # 密码
         captcha_text = self.json_args["imagecode"]  # 验证码文本
         captcha_id = self.get_secure_cookie("captcha_id")# 获取cookie中远程cookie值
     except Exception as e:                          # 出现异常或参数错误返回
         raise tornado.gen.Return(self.write({"errcode": "4103", "errmsg": "参数错误"}))
     if not captcha_id:
         raise tornado.gen.Return(self.write({"errcode": "4103", "errmsg": "参数错误"}))
     captcha = Captcha(json.loads(captcha_id))       # 创建验证码对象
     dict_data = yield captcha.check_captcha(captcha_text)# 发送请求检验验证码值
     if dict_data["errcode"] != "0":                 # 验证码过期
         raise tornado.gen.Return(self.write({"errcode": "4103", "errmsg": "验证码错误"}))
     check_login = CheckLogin(dict_data["cookies"])  # 发送请求验证账号密码
     resp = yield check_login.get_uamtk(user_number,user_pwd)
     if resp["errcode"] != "0":                      # 账号密码错误
         raise tornado.gen.Return(self.write({"errcode": "4106", "errmsg": "用户名或密码错误"}))
     resp = yield check_login.get_session()          # 发送请求更换session
     if not resp:
         raise tornado.gen.Return(self.write({"errcode": "4106", "errmsg": "用户名或密码错误1"}))
     resp = yield check_login.get_user_name()        # 发送请求获取用户名
     if resp["errcode"] != "0":                      # 获取失败
         raise tornado.gen.Return(self.write({"errcode": "4106", "errmsg": "用户名或者密码错误2"}))
     user = self.db.get("select id from user_info where ui_account=%s",user_number)
     if user == None:                                # 如果无数据则插入
         user_id = self.db.execute("insert into user_info(ui_name,ui_account,ui_pwd) values(%s,%s,%s)",resp["username"],user_number,user_pwd)
     else:                                           # 否则更新数据
         self.db.execute("update user_info set ui_pwd=%s,ui_login=ui_login+1 where ui_account=%s",user_pwd,user_number)
         user_id = user["id"]
     session = Session(self)                         # 创建session对象
     session.data["user_name"] = resp["username"]
     session.data["user_account"] = user_number
     session.data["user_id"] = user_id
     session.data["cookies"] = resp["cookies"]
     session.save()                                  # 写入数据并设置cookie
     self.clear_cookie("captcha-id")                 # 删除验证码验证数据 返回登录成功
     raise tornado.gen.Return(self.write({"errcode": "0", "errmsg": "登录成功"}))
Example #4
0
def validate_captcha_text(captcha, delete=True):
    secret = session.get('cap_secret')
    if not secret:
        raise CaptchaSecretNotFoundError()
    Captcha.validate(captcha, secret, delete)