HandlerBase.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import simplejson as json
  2. import traceback
  3. from datetime import date
  4. from concurrent.futures import ThreadPoolExecutor
  5. from tornado.web import RequestHandler
  6. from model.log import logger
  7. from model.common import errors
  8. log = logger()
  9. from model.DateUtils import DateUtils
  10. class BaseHandler(RequestHandler,DateUtils):
  11. def __init__(self, application, request, **kwargs):
  12. RequestHandler.__init__(self, application, request, **kwargs)
  13. self._status_code = 200
  14. self.executor = ThreadPoolExecutor(200)
  15. self.set_default_headers()
  16. def options(self):
  17. # 返回方法1
  18. self.set_status(200)
  19. self.finish()
  20. def set_default_headers(self):
  21. super().set_default_headers()
  22. # 设置允许的请求头
  23. self.set_header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS")
  24. self.set_header("X-XSS-Protecion", "1")
  25. self.set_header("Content-Security-Policy", "default-src 'self'")
  26. self.set_header("Access-Control-Allow-Credentials", "true")
  27. # 设置一些自己定义的请求头
  28. self.set_header("Access-Control-Allow-Headers",
  29. "Content-Type, Depth, User-Agent, Token, Origin, X-Requested-With, Accept, Authorization")
  30. self.set_header("Content-Type", "application/json; charset=UTF-8")
  31. self.set_header("Access-Control-Allow-Origin","*")
  32. def write_json(self, data, status_code=200, msg='success',total=1):
  33. self.write(json.dumps({'status': {'msg': msg, "RetCode": status_code},'total':total,'data': data}))
  34. def get_args(self):
  35. di=json.loads(self.request.body.decode())
  36. if isinstance(di,str):
  37. di=json.loads(di)
  38. return di
  39. def write_error(self, status_code, msg=None, **kwargs):
  40. if self.settings.get("serve_traceback") and "exc_info" in kwargs:
  41. # in debug mode, try to send a traceback
  42. lines = []
  43. for line in traceback.format_exception(*kwargs["exc_info"]):
  44. lines.append(line)
  45. self.write_json(dict(traceback=''.join(lines)), status_code, self._reason)
  46. elif msg:
  47. self.write_json(None, status_code, msg)
  48. else:
  49. self.write_json(None, status_code, self._reason)
  50. def _authentication(self):
  51. """
  52. :return: True, 认证通过, False 认证不通过
  53. """
  54. return True
  55. log.info("author %s" % self.request.headers)
  56. # log.info(self.request.remote_ip)
  57. if self.request.headers.get("Gip_real") == '183.129.168.74':
  58. return True
  59. if not self.request.headers.get("Authorization"):
  60. return False
  61. else:
  62. # redis 中判断值是否存在
  63. # ur = UserRedisComm()
  64. # key = "admin_account_check%s" % (self.request.headers.get("Authorization"))
  65. # return True if ur.r.get(key) else False
  66. return True