class LoginHandler(BaseHandler): """登陆""" def post(self): # 获取参数 mobile = self.json_args.get("mobile") password = self.json_args.get("password") # 检查参数 if not all((mobile, password)): return self.write(dict(errcode=RET.PARAMERR, errmsg="参数错误")) if not re.match(r"^1\d{10}$", mobile): return self.write(dict(errcode=RET.DATAERR, errmsg="手机号错误")) # 检查密码是否正确 res = self.db.get( "select up_user_id,up_name,up_passwd from ih_user_profile where up_mobile=%(mobile)s", mobile=mobile) password = hashlib.sha256(password + config.passwd_hash_key).hexdigest() if res and res["up_passwd"] == unicode(password): try: self.session = Session(self) self.session.data['user_id'] = res['up_user_id'] self.session.data['name'] = res['up_name'] self.session.data['mobile'] = mobile self.session.sava() except Exception as e: logging.error(e) return self.write(dict(errcode=RET.OK, errmsg="OK")) else: return self.write(dict(errcode=RET.DATAERR, errmsg="账号或密码错误!"))
def post(self): # 获取参数 mobile = self.json_args.get("mobile") sms_code = self.json_args.get("phonecode") password = self.json_args.get("password") print mobile, sms_code, password # 参数的检验 if not all((mobile, sms_code, password)): return self.write(dict(errcode=RET.PARAMERR, errmsg="参数不完整")) # 检测号码格式 if not re.match(r"^1\d{10}$", mobile): return self.write(dict(errcode=RET.DATAERR, errmsg="手机格式错误")) # 可以检测密码长度 # if len(password)<6: # 判断短信验证码 if "2468" != sms_code: try: real_sms_code = self.redis.get("sms_code_%s" % mobile) except Exception as e: logging.error(e) return self.write(dict(errcode=RET.DBERR, errmsg="查询验证码出错")) # 判断验证码是否过期 if not real_sms_code: return self.write(dict(errcode=RET.NODATA, errmsg="验证码过期")) # 判断填写验证码是否正确 if real_sms_code != sms_code: return self.write(dict(errcode=RET.DATAERR, errmsg="验证码错误")) try: self.redis.delete("sms_code_%s" % mobile) except Exception as e: logging.error(e) # 保存数据,同时判断手机号是否存在, passwd = hashlib.sha256( password + config.passwd_hash_key, ).hexdigest() # 没有明白-------------- sql = "insert into ih_user_profile(up_name, up_mobile, up_passwd) value(%(name)s, %(mobile)s, %(passwd)s);" print mobile, passwd try: user_id = self.db.execute(sql, name=mobile, mobile=mobile, passwd=passwd) except Exception as e: logging.error(e) return self.write(dict(errcode=RET.DATAEXIST, errmsg="号码已经存在")) session = Session(self) session.data["user_id"] = user_id session.data["mobile"] = mobile session.data["name"] = mobile try: session.sava() except Exception as e: logging.error(e) self.write(dict(errcode=RET.OK, errmsg="注册成功"))
class BaseHandler(RequestHandler): """自定义基类""" @property #成员方法作为属性对待------------------ def db(self): return self.application.db @property # 这里装饰器的作用有遗忘,------------ def redis(self): return self.application.redis def prepare(self): # 调用的时间是------------ self.xsrf_token """预解析json数据""" if self.request.headers.get("Content-Type","").startswith("application/json"): self.json_args = json.loads(self.request.body) else: self.json_args = {} def set_default_headers(self): """设置默认json格式""" self.set_header("Content-Type", "application/json; charset=UTF-8") # def write_error(self, status_code, **kwargs): # pass def initialize(self): pass def on_finish(self): pass def get_current_user(self): """判断用户是否登陆""" self.session = Session(self) self.session.sava() return self.session.data