def post(self): auth_log.info("Authenticate2Handler.") json_msg_str = self.request.body req_json = json.loads(json_msg_str) required_args = ["accID", "password"] optional_args = [] if True != httpJSONArgsCheck(req_json, required_args, optional_args): auth_log.error("Authenticate protocol data error!") rep_json = {} rep_json["err"] = FD_ERR_AUTH_PROTOCOL_DATA_ERROR self.set_header("Content-type", "application/json") self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder)) return acc_id = req_json["accID"] password = req_json["password"] if True != dao.authenticate2(acc_id, password): auth_log.error("Authenticate failed! Paras: %s", json_msg_str) rep_json = {} rep_json["err"] = FD_ERR_AUTH_AUTHENTICATE_FAILED self.set_header("Content-type", "application/json") self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder)) return rep_json = {} rep_json["err"] = FD_AUTH_NOERR self.set_header("Content-type", "application/json") self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder)) return
def authenticate2(self, acc_id, password): conn = self._pool.connection() cursor = conn.cursor() try: sql = "select * from fd_t_account where acc_id = %s and password = %s" paras = (acc_id, password) row_count = cursor.execute(sql, paras) if row_count <= 0: auth_log.error("Authenticate failed, invalid account!") return False return True except MySQLdb.Error, e: auth_log.error("Authenticate failed! sql: %s, paras: %s, exception: %s", sql, paras, e) return False
def authenticate(self, auth_mode, acc_type, account, email, phone, password, open_id): conn = self._pool.connection() cursor = conn.cursor() try: if FD_AUTH_MODE_QQ == auth_mode or FD_AUTH_MODE_WECHAT == auth_mode or FD_AUTH_MODE_WEIBO == auth_mode or FD_AUTH_MODE_ALIPAY == auth_mode: sql = "select acc_id from fd_t_account where auth_mode = %s and acc_type = %s and open_id = %s" paras = (auth_mode, acc_type, open_id) elif FD_AUTH_MODE_ACCOUNT == auth_mode: sql = "select acc_id from fd_t_account where acc_type = %s and account = %s and password = %s" paras = (acc_type, account, password) elif FD_AUTH_MODE_PHONE == auth_mode: sql = "select acc_id from fd_t_account where acc_type = %s and phone_no = %s and password = %s" paras = (acc_type, phone, password) elif FD_AUTH_MODE_EMAIL == auth_mode: sql = "select acc_id from fd_t_account where acc_type = %s and email = %s and password = %s" paras = (acc_type, email, password) else: auth_log.error("Authenticate failed, invalid authenticate mode!") return None row_count = cursor.execute(sql, paras) if row_count <= 0: auth_log.error("Authenticate failed, invalid account!") return -1 row = cursor.fetchone() acc_id = row["acc_id"] return acc_id except MySQLdb.Error, e: auth_log.error("Authenticate failed! sql: %s, paras: %s, exception: %s", sql, paras, e) return None
class DBManage(object): _pool = PooledDB(creator=MySQLdb, mincached=1, maxcached=100, host=CONFIG.MYSQL.HOST, port=CONFIG.MYSQL.PORT, user=CONFIG.MYSQL.USER, passwd=CONFIG.MYSQL.PASSWD, db=CONFIG.MYSQL.DATABASE, use_unicode=False, charset="utf8", cursorclass=DictCursor) def __init__(self): pass def authenticate(self, auth_mode, acc_type, account, email, phone, password, open_id): conn = self._pool.connection() cursor = conn.cursor() try: if FD_AUTH_MODE_QQ == auth_mode or FD_AUTH_MODE_WECHAT == auth_mode or FD_AUTH_MODE_WEIBO == auth_mode or FD_AUTH_MODE_ALIPAY == auth_mode: sql = "select acc_id from fd_t_account where auth_mode = %s and acc_type = %s and open_id = %s" paras = (auth_mode, acc_type, open_id) elif FD_AUTH_MODE_ACCOUNT == auth_mode: sql = "select acc_id from fd_t_account where acc_type = %s and account = %s and password = %s" paras = (acc_type, account, password) elif FD_AUTH_MODE_PHONE == auth_mode: sql = "select acc_id from fd_t_account where acc_type = %s and phone_no = %s and password = %s" paras = (acc_type, phone, password) elif FD_AUTH_MODE_EMAIL == auth_mode: sql = "select acc_id from fd_t_account where acc_type = %s and email = %s and password = %s" paras = (acc_type, email, password) else: auth_log.error("Authenticate failed, invalid authenticate mode!") return None row_count = cursor.execute(sql, paras) if row_count <= 0: auth_log.error("Authenticate failed, invalid account!") return -1 row = cursor.fetchone() acc_id = row["acc_id"] return acc_id except MySQLdb.Error, e: auth_log.error("Authenticate failed! sql: %s, paras: %s, exception: %s", sql, paras, e) return None except Exception, e: auth_log.error("Authenticate failed! Exception: %s", e) return None
def post(self): auth_log.info("AuthenticateHandler.") json_msg_str = self.request.body req_json = json.loads(json_msg_str) required_args = ["mode", "type"] optional_args = ["account", "email", "phone", "password", "openID"] if True != httpJSONArgsCheck(req_json, required_args, optional_args): auth_log.error("Authenticate protocol data error!") rep_json = {} rep_json["err"] = FD_ERR_AUTH_PROTOCOL_DATA_ERROR self.set_header("Content-type", "application/json") self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder)) return auth_mode = int(req_json["mode"]) acc_type = int(req_json["type"]) account = req_json["account"] email = req_json["email"] phone = req_json["phone"] password = req_json["password"] open_id = req_json["openID"] acc_id = dao.authenticate(auth_mode, acc_type, account, email, phone, password, open_id) if acc_id is None: auth_log.error("Authenticate failed! Paras: %s", json_msg_str) rep_json = {} rep_json["err"] = FD_ERR_AUTH_AUTHENTICATE_FAILED self.set_header("Content-type", "application/json") self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder)) return if acc_id < 0: auth_log.error("Account is not existed! Paras: %s", json_msg_str) rep_json = {} rep_json["err"] = FD_ERR_AUTH_ACCOUNT_UNEXISTED self.set_header("Content-type", "application/json") self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder)) return rep_json = {} rep_json["err"] = FD_AUTH_NOERR rep_json["accID"] = acc_id self.set_header("Content-type", "application/json") self.write(json.dumps(rep_json, cls=ExtendedJsonEncoder)) return
return None except Exception, e: auth_log.error("Authenticate failed! Exception: %s", e) return None finally: cursor.close() conn.close() def authenticate2(self, acc_id, password): conn = self._pool.connection() cursor = conn.cursor() try: sql = "select * from fd_t_account where acc_id = %s and password = %s" paras = (acc_id, password) row_count = cursor.execute(sql, paras) if row_count <= 0: auth_log.error("Authenticate failed, invalid account!") return False return True except MySQLdb.Error, e: auth_log.error("Authenticate failed! sql: %s, paras: %s, exception: %s", sql, paras, e) return False except Exception, e: auth_log.error("Authenticate failed! Exception: %s", e) return False finally: cursor.close() conn.close()