我有一个cherrypy应用程序,其中我实现了一个自定义工具(请求过滤器),并将其附加到before_handler钩子(Hook)上。 下面是过滤器的实现:
def custom_filter():
method = cherrypy.request.method
if method == 'POST':
print 'check POST token'
try:
request_headers = cherrypy.request.headers
token = request_headers['Authorization']
if not _auth.validate_token(token):
return 'error message'
except:
print 'Error in post filter'
我想要的是如果 token 无效,则向客户端返回一条消息。 return 语句不起作用。是否有可能做到这一点?如果没有,有其他选择吗?
最佳答案
基于this发布并经过一些调查后,我找到了一个适合我的解决方案:停止请求的执行,然后添加响应正文。
def custom_filter():
method = cherrypy.request.method
if method == 'POST':
print 'check POST token'
try:
request_headers = cherrypy.request.headers
token = request_headers['Authorization']
if not _auth.validate_token(token):
cherrypy.request.handler = None # stop request
cherrypy.response.status = 403
cherrypy.response.body = 'test' # add response message
except:
print 'Error in post filter'
关于python - 从cherrypy before_handler工具返回json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38789389/