import simplejson as json import traceback from datetime import date from concurrent.futures import ThreadPoolExecutor from tornado.web import RequestHandler from model.log import logger from model.common import errors log = logger() from model.DateUtils import DateUtils class BaseHandler(RequestHandler,DateUtils): def __init__(self, application, request, **kwargs): RequestHandler.__init__(self, application, request, **kwargs) self._status_code = 200 self.executor = ThreadPoolExecutor(200) self.set_default_headers() def options(self): # 返回方法1 self.set_status(200) self.finish() def set_default_headers(self): super().set_default_headers() # 设置允许的请求头 self.set_header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS") self.set_header("X-XSS-Protecion", "1") self.set_header("Content-Security-Policy", "default-src 'self'") self.set_header("Access-Control-Allow-Credentials", "true") # 设置一些自己定义的请求头 self.set_header("Access-Control-Allow-Headers", "Content-Type, Depth, User-Agent, Token, Origin, X-Requested-With, Accept, Authorization") self.set_header("Content-Type", "application/json; charset=UTF-8") self.set_header("Access-Control-Allow-Origin","*") def write_json(self, data, status_code=200, msg='success',total=1,total_data={}): self.write(json.dumps({'status': {'msg': msg, "RetCode": status_code},'total':total,'data': data,"total_data":total_data})) def get_args(self): di=json.loads(self.request.body.decode()) if isinstance(di,str): di=json.loads(di) return di def write_error(self, status_code, msg=None, **kwargs): if self.settings.get("serve_traceback") and "exc_info" in kwargs: # in debug mode, try to send a traceback lines = [] for line in traceback.format_exception(*kwargs["exc_info"]): lines.append(line) self.write_json(dict(traceback=''.join(lines)), status_code, self._reason) elif msg: self.write_json(None, status_code, msg) else: self.write_json(None, status_code, self._reason) def _authentication(self): """ :return: True, 认证通过, False 认证不通过 """ return True log.info("author %s" % self.request.headers) # log.info(self.request.remote_ip) if self.request.headers.get("Gip_real") == '183.129.168.74': return True if not self.request.headers.get("Authorization"): return False else: # redis 中判断值是否存在 # ur = UserRedisComm() # key = "admin_account_check%s" % (self.request.headers.get("Authorization")) # return True if ur.r.get(key) else False return True